<?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>80613</bug_id>
          
          <creation_ts>2012-03-08 11:03:20 -0800</creation_ts>
          <short_desc>[chromium] Clean up culling tests and templatize to test impl constructs</short_desc>
          <delta_ts>2012-03-12 08:50:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80173</dependson>
    
    <dependson>80752</dependson>
    
    <dependson>80774</dependson>
          <blocked>80741</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>573961</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-08 11:03:20 -0800</bug_when>
    <thetext>[chromium] Clean up culling tests and templatize to test impl constructs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573964</commentid>
    <comment_count>1</comment_count>
      <attachid>130854</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-08 11:05:01 -0800</bug_when>
    <thetext>Created attachment 130854
Patch

This is a large unit test cleanup, plus templatization so that we can run all the CCOcclusionTracker tests with both main and impl thread constructs.

While cleaning up, I made the test contain fewer LOC that are not relevant to the particular test, with helper methods in the parent test class.

Coverage remains the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573965</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-08 11:05:41 -0800</bug_when>
    <thetext>This is built on top of bug #80173 so EWS should wait for it to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573971</commentid>
    <comment_count>3</comment_count>
      <attachid>130855</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-08 11:09:43 -0800</bug_when>
    <thetext>Created attachment 130855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574979</commentid>
    <comment_count>4</comment_count>
      <attachid>131053</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 10:14:26 -0800</bug_when>
    <thetext>Created attachment 131053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575002</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 10:44:00 -0800</bug_when>
    <thetext>http://p.prom.corp.google.com/2124004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575011</commentid>
    <comment_count>6</comment_count>
      <attachid>131053</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-09 11:01:16 -0800</bug_when>
    <thetext>Comment on attachment 131053
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=131053&amp;action=review

&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:275
&gt; +    PassOwnPtr&lt;LayerChromium&gt; create(LayerChromium* parent)
&gt; +    {
&gt; +        RefPtr&lt;LayerChromium&gt; layer = LayerChromium::create();
&gt; +        return adoptPtr(layer.release().leakRef());
&gt; +    }

This is super super sketchy.  I know that this is &quot;just&quot; test code, but I don&apos;t like mixing RefPtr and OwnPtr like this, since the potential for accidentally freeing something with a RefPtr that some OwnPtr is still pointing at seems really huge.  And, even if ASAN doesn&apos;t get any indigestion from the current code, I don&apos;t trust future code to behave properly.

Can CCOcclusionTrackerTest typedef LayerPtr and PassLayerPtr to be the right OwnPtr or RefPtr, avoiding this problem? I think this would also allow you to merge some functions and m_layerChromium/m_layerImpl.

&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:317
&gt; +        CCProxy::setCurrentThreadIsImplThread(true); \

I think you can use DebugScopedSetImplThread instead of calling setCurrentThreadIsImplThread anywhere in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575187</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 13:53:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 131053 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=131053&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:275
&gt; &gt; +    PassOwnPtr&lt;LayerChromium&gt; create(LayerChromium* parent)
&gt; &gt; +    {
&gt; &gt; +        RefPtr&lt;LayerChromium&gt; layer = LayerChromium::create();
&gt; &gt; +        return adoptPtr(layer.release().leakRef());
&gt; &gt; +    }
&gt; 
&gt; This is super super sketchy.  I know that this is &quot;just&quot; test code, but I don&apos;t like mixing RefPtr and OwnPtr like this, since the potential for accidentally freeing something with a RefPtr that some OwnPtr is still pointing at seems really huge.  And, even if ASAN doesn&apos;t get any indigestion from the current code, I don&apos;t trust future code to behave properly.
&gt;
&gt; Can CCOcclusionTrackerTest typedef LayerPtr and PassLayerPtr to be the right OwnPtr or RefPtr, avoiding this problem? I think this would also allow you to merge some functions and m_layerChromium/m_layerImpl.

Thanks for the brilliant idea to dump all the types into two classes and make the template on them. That really helped make this possible. Got rid of all the leakPtr weirdness.
 
&gt; &gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:317
&gt; &gt; +        CCProxy::setCurrentThreadIsImplThread(true); \
&gt; 
&gt; I think you can use DebugScopedSetImplThread instead of calling setCurrentThreadIsImplThread anywhere in this patch.

Done! Thanks for pointing it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575191</commentid>
    <comment_count>8</comment_count>
      <attachid>131100</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 13:54:30 -0800</bug_when>
    <thetext>Created attachment 131100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575192</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-09 13:55:56 -0800</bug_when>
    <thetext>go/pastebin/2123005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575215</commentid>
    <comment_count>10</comment_count>
      <attachid>131100</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-09 14:19:53 -0800</bug_when>
    <thetext>Comment on attachment 131100
Patch

Looks way better.  Thanks!  R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575368</commentid>
    <comment_count>11</comment_count>
      <attachid>131100</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 17:24:24 -0800</bug_when>
    <thetext>Comment on attachment 131100
Patch

Clearing flags on attachment: 131100

Committed r110353: &lt;http://trac.webkit.org/changeset/110353&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575369</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 17:24:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575536</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-10 10:36:32 -0800</bug_when>
    <thetext>Reopening to fix compile on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575545</commentid>
    <comment_count>14</comment_count>
      <attachid>131179</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-10 11:14:59 -0800</bug_when>
    <thetext>Created attachment 131179
Patch

Fix build on mac. Missing this-&gt; on calcDrawEtc() calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575606</commentid>
    <comment_count>15</comment_count>
      <attachid>131179</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 18:37:54 -0800</bug_when>
    <thetext>Comment on attachment 131179
Patch

Clearing flags on attachment: 131179

Committed r110384: &lt;http://trac.webkit.org/changeset/110384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575607</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-10 18:38:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575847</commentid>
    <comment_count>17</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-11 15:55:23 -0700</bug_when>
    <thetext>Reopening to fix win build!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575855</commentid>
    <comment_count>18</comment_count>
      <attachid>131261</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-11 17:16:08 -0700</bug_when>
    <thetext>Created attachment 131261
Patch

Fix build on win. Missing a default constructor in each of the test classes. Ran a win &amp; mac try job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576159</commentid>
    <comment_count>19</comment_count>
      <attachid>131261</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 08:50:44 -0700</bug_when>
    <thetext>Comment on attachment 131261
Patch

Clearing flags on attachment: 131261

Committed r110433: &lt;http://trac.webkit.org/changeset/110433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576160</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 08:50:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130854</attachid>
            <date>2012-03-08 11:05:01 -0800</date>
            <delta_ts>2012-03-08 11:09:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120308140459.patch</filename>
            <type>text/plain</type>
            <size>224007</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBmYzhkMmU0NWVl
M2IxMDc5MGU4ZTJiOWViOGVkMDFkZmNhN2JjZTNhLi5iMGMwM2EwYmNhZDJiY2IxYTFiZjA5M2Uw
MjhjOGFmZjI5MzFjZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
IAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAg
LTQ1LDg1ICs0Nyw2OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsK
IAotY2xhc3MgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7CitjbGFzcyBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6Ci0gICAgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKQotICAgICAgICA6IExheWVyQ2hyb21pdW0oKQotICAgIHsKLSAgICB9CisgICAgVGVz
dENvbnRlbnRMYXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1
YWwgUmVnaW9uIG9wYXF1ZUNvbnRlbnRzUmVnaW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0pIGNvbnN0Ci0gICAgewotICAgICAgICBGbG9hdFJlY3Qg
dHJhbnNmb3JtZWRSZWN0ID0gY29udGVudFNwYWNlVHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0
KGludGVyc2VjdGlvbihtX29wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKSkpOwot
ICAgICAgICByZXR1cm4gUmVnaW9uKGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm1lZFJlY3QpKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFx
dWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKyAg
ICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250ZW50c1JlZ2lvbihjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3JtKSBjb25zdCB7IHJldHVybiBlbmNsb3NlZElu
dFJlY3QoY29udGVudFNwYWNlVHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGludGVyc2VjdGlv
bihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKSkpKTsgfQorICAgIHZv
aWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVj
dCkgeyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQogCiBwcml2
YXRlOgotICAgIEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CisgICAgSW50UmVjdCBtX29wYXF1
ZUNvbnRlbnRzUmVjdDsKIH07CiAKLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhM
YXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKLXsK
LSAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldFN1Ymxh
eWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwotICAgIGxheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBsYXllci0+c2V0UG9zaXRpb24ocG9zaXRp
b24pOwotICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKLX0KLQotdm9pZCBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KiBs
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUsIGJvb2wg
b3BhcXVlTGF5ZXJzKQotewotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIs
IHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7Ci0gICAgaWYgKG9wYXF1ZUxheWVycykKLSAg
ICAgICAgbGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOwotICAgIGVsc2UgewotICAgICAgICBsYXll
ci0+c2V0T3BhcXVlKGZhbHNlKTsKLSAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAgICAgIGxh
eWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0
KCkpOwotICAgIH0KLX0KK3N0YXRpYyBpbnQgbmV4dENDTGF5ZXJJbXBsSWQgPSAwOworCitjbGFz
cyBUZXN0Q29udGVudExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CitwdWJsaWM6Cisg
ICAgVGVzdENvbnRlbnRMYXllckltcGwoKSA6IENDTGF5ZXJJbXBsKG5leHRDQ0xheWVySW1wbElk
KyspIHsgc2V0RHJhd3NDb250ZW50KHRydWUpOyB9CisKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFx
dWVDb250ZW50c1JlZ2lvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNl
VHJhbnNmb3JtKSBjb25zdCB7IHJldHVybiBlbmNsb3NlZEludFJlY3QoY29udGVudFNwYWNlVHJh
bnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVj
dCwgdmlzaWJsZUxheWVyUmVjdCgpKSkpKTsgfQorICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNS
ZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRz
UmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQorcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fb3Bh
cXVlQ29udGVudHNSZWN0OworfTsKIAogLy8gQSBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHRvdGFs
IGN1cnJlbnQgb2NjbHVzaW9uLgotY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrZXIgewordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK2NsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT4gewogcHVibGljOgotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoSW50UmVjdCBzY3Jl
ZW5TY2lzc29yUmVjdCkKLSAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXIoc2NyZWVuU2Npc3Nv
clJlY3QpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY3JlZW5TY2lz
c29yUmVjdCkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+KHNjcmVlblNjaXNzb3JSZWN0KQogICAgICAgICAsIG1fb3ZlcnJpZGVM
YXllclNjaXNzb3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlckRhbWFnZUNsaWVudCogZGFtYWdlQ2xpZW50KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJh
Y2tlcihzY3JlZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQorICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlckRhbWFnZUNsaWVudEJhc2U8UmVuZGVyU3VyZmFjZVR5cGU+KiBkYW1hZ2VDbGllbnQp
CisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQogICAgICAgICAsIG1fb3Zl
cnJpZGVMYXllclNjaXNzb3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpb24g
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tl
cjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW47IH0KLSAgICBSZWdpb24gb2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyOjpt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25J
blNjcmVlblNwYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3Jl
ZW47IH0KKyAgICBSZWdpb24gb2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQ7IH0KIAotICAgIHZvaWQgc2V0T2NjbHVz
aW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBDQ09jY2x1c2lvblRyYWNr
ZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gcmVnaW9uOyB9Ci0gICAgdm9p
ZCBzZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsgQ0NP
Y2NsdXNpb25UcmFja2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lv
bjsgfQorICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJl
Z2lvbikgeyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQorICAgIHZv
aWQgc2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVnaW9uOyB9CiAKICAgICB2b2lkIHNldExh
eWVyU2Npc3NvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lz
c29yUmVjdCA9IHRydWU7IG1fbGF5ZXJTY2lzc29yUmVjdCA9IHJlY3Q7fQogICAgIHZvaWQgdXNl
RGVmYXVsdExheWVyU2Npc3NvclJlY3QoKSB7IG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID0g
ZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JS
ZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IEND
T2NjbHVzaW9uVHJhY2tlcjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7
IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShj
b25zdCBMYXllclR5cGUqIGxheWVyKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlTGF5ZXJTY2lz
c29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UobGF5ZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX292ZXJyaWRlTGF5ZXJTY2lzc29y
UmVjdDsKICAgICBJbnRSZWN0IG1fbGF5ZXJTY2lzc29yUmVjdDsKIH07CiAKLWNsYXNzIFRlc3RE
YW1hZ2VDbGllbnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorY2xhc3MgVGVzdERhbWFnZUNsaWVu
dCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJlbmRlclN1cmZh
Y2VUeXBlPiB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIGludGVyZmFjZQotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IGRhbWFnZVJlY3QoY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKikgY29uc3QgeyBy
ZXR1cm4gbV9kYW1hZ2VSZWN0OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgZGFtYWdlUmVjdChj
b25zdCBSZW5kZXJTdXJmYWNlVHlwZSopIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlUmVjdDsgfQog
CiAgICAgLy8gVGVzdGluZyBzdHVmZgogICAgIFRlc3REYW1hZ2VDbGllbnQoY29uc3QgRmxvYXRS
ZWN0JiBkYW1hZ2VSZWN0KSA6IG1fZGFtYWdlUmVjdChkYW1hZ2VSZWN0KSB7IH0KQEAgLTEzMywy
MDgxICsxMTgsMTY1NCBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7CiB9
OwogCi0jZGVmaW5lIFRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShGVUxMVEVTVE5BTUUs
IFNIT1JUVEVTVE5BTUUpIFwKLSAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlTGF5ZXIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNI
T1JUVEVTVE5BTUUodHJ1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVQYWludFJlY3Qp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgU0hP
UlRURVNUTkFNRShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkNDT2NjbHVzaW9uVHJhY2tlclRlc3QoKQorICAgIHsKKyAgICAgICAgbV9y
b290Q2hyb21pdW0uY2xlYXIoKTsKKyAgICAgICAgbV9yb290SW1wbC5jbGVhcigpOworICAgICAg
ICBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bS5jbGVhcigpOworICAgICAgICBtX3Jl
bmRlclN1cmZhY2VMYXllckxpc3RJbXBsLmNsZWFyKCk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIC8vIERvIHRoaXMgYWZ0ZXIgZnJlZWluZyBldmVyeXRoaW5nLiBEb24ndCBsZWF2ZSB0aGUg
UHJveHkgaW4gYW4gdW5leHBlY3RlZCBzdGF0ZSBmb3Igb3RoZXIgdGVzdHMuCisgICAgICAgIEND
UHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQoZmFsc2UpOworI2VuZGlmCiAgICAg
fQogCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQot
ewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcg
dXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxh
eWVyKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXll
cnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJM
aXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdl
dCgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwg
MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkp
LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjks
IDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDI5LCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
MCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7Ci19Ci0KLVRFU1RfT1BB
UVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik7Ci0KLXZvaWQgbGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCi17
Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1
c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5
ZXIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgbGF5
ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBsYXllclRyYW5zZm9ybS5yb3Rh
dGUoOTApOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAs
IDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRM
YXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwg
NzApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzAp
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwgNzAs
IDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwg
NzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwg
MjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcw
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEw
MCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5
LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlO
VEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVn
aW9uV2l0aFJvdGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik7
Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24oYm9vbCBv
cGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zv
cm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50
aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVu
dC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFu
c2Zvcm07Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7Ci0KLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwg
MzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg0
OSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
NTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkp
OwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1
MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDQ5LCA1
MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDUwLCAxLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1
MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDUxLCA1MCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1
MSwgNTEsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAxMDAsIDUw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNTAsIDUxLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEs
IDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXll
clNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUw
KSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUw
LCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDks
IDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNDksIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwg
NDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDUwLCA1MSwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDQ5LCA1MSwgMSwgNDkpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLX0KLQotVEVTVF9PUEFRVUVf
QU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aFRyYW5zbGF0aW9uKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3Rh
dGVkU3VyZmFjZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQg
dGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENo
aWxkKGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwot
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zv
cm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxv
YXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAs
IDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGls
ZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9
IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVy
VHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJl
bnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6
ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwg
NjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVj
dCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwg
NzEpKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAs
IDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MCwgNDMwLCA2MSwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsKLSAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9u
LmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDM5LCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7
Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwg
NzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEs
IDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotCi0gICAgLyogSnVz
dGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Ci0gICAgICAg
ICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8v
Ly8vCi0gICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgIHwgMzAgKyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgICB8ICAxMCAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHwgICAg
ICAgICAgICAgICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIHwxMCstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8v
Ly8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98
NjAgICAgICAgICAgICB8ICB8Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAg
ICAgICAgICAgIHwgIHwKLSAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAot
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAg
ICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8Ci0gICAgICAgICAgICstLXwt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICA0OTAgICAgICAgICAgICAgfAotICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCi0g
ICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlLCBs
YXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSk7Ci0KLXZvaWQgbGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKGJvb2wgb3Bh
cXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3Jt
cyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0
eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBjaGlsZDIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOwotICAgIHBhcmVu
dC0+YWRkQ2hpbGQoY2hpbGQyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJh
bnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hp
bGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1
MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5z
Zm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0K
LSAgICAvLyB8Y2hpbGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQg
YnkgQ0NPY2NsdXNpb25UcmFja2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBl
eGVyY2lzZXMgZGlmZmVyZW50IGNvZGUgaW4KLSAgICAvLyBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSwgYXMgdGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbi4KLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg2MCwgMjApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OwotCi0gICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwot
Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQz
MCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQu
Z2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTAsIDQzMSwgNjAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNz
b3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgp
LCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0Mjks
IDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0gICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAw
MCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIC8v
IFRoaXMgaXMgdGhlIGxpdHRsZSBwaWVjZSBub3Qgb2NjbHVkZWQgYnkgY2hpbGQyCi0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICAv
LyBUaGlzIGV4dGVuZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgd2lsbCBiZSB0
aGUgb3JpZ2luYWwgcmVjdC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgNjAs
IDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVj
dCg5LCA0MzAsIDYwLCA4MCkpKTsKLSAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0d28gYWRqYWNl
bnQgc2lkZXMgb2YgY2hpbGQyLCBhbmQgc2hvdWxkIGluY2x1ZGVkIHRoZSB1bm9jY2x1ZGVkIHBh
cnRzIG9mIGVhY2ggc2lkZS4KLSAgICAvLyBUaGlzIGFsc28gZGVtb25zdHJhdGVzIHRoYXQgdGhl
IHJlY3QgY2FuIGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3QgZ2V0IGNsaXBwZWQgdG8gdGhlIGxh
eWVyJ3MgdmlzaWJsZUxheWVyUmVjdCgpLgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEw
LCA0MzAsIDIwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0
KCksIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAvLyBUaGlzIGV4dGVuZHMgcGFz
dCB0aHJlZSBhZGphY2VudCBzaWRlcyBvZiBjaGlsZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRo
ZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4gVGhlIGxlZnQKLSAgICAvLyBhbmQgYm90
dG9tIGVkZ2VzIGFyZSBjb21wbGV0ZWx5IHVub2NjbHVkZWQgZm9yIHNvbWUgcm93L2NvbHVtbiBz
byB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgcXVlcnkgcmVjdC4KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7
Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRS
ZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYw
LCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpLmlzRW1wdHko
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGls
ZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRS
ZWN0KC0xMCwgNDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwg
NjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKLSAg
ICAvLyB8Y2hpbGQyfCBzaG91bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSBzdXJmYWNlIHdlIGFyZSBs
ZWF2aW5nIG5vdwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBWZWN0b3I8SW50UmVjdD4g
c2NyZWVuID0gb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpOwotICAg
IFZlY3RvcjxJbnRSZWN0PiB0YXJnZXQgPSBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoOTAsIDMwLCAxMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLQotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA2MCwg
MTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMw
LCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0KLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMzAsIDYwLCAxMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
OSwgMzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg5MCwgMzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMx
LCA2MCwgMTApKS5pc0VtcHR5KCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5p
c0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0
MCwgNzAsIDYwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBpcyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNo
aWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzksIDEwLCAxKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3
MCwgNjApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCB0b3AvcmlnaHQgZW5kcyBv
ZiB8Y2hpbGQyfC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDI5LCA3MCwgNzApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0
IGVuZHMgb2YgfGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzksIDgw
LCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDIwLCAzOSwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0
MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZv
ciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyfDoKLSAgICAgICAgICAgICAgIDEwMAot
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KLSAgICAgIHwg
ICAgMzAgICAgICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAg
ICB8ICAgICAzMCAgIDYwICAgICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKLSAgICAgIHwgMzAg
KyAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8
ICAzMCArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgICB8ICAx
MCAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAg
IHxcXFxcXFxcXFxcXFx8ICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIHwxMCstLS0t
LS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tfFxc
XFxcXFxcXFxcXHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgIHwgICAgKyAtLS0tLS0tLS0t
LS0rICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0t
LS0tLS0tKy8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8v
Ly8vLy98NjAgICAgICAgICAgICB8ICB8Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8v
L3wgICAgICAgICAgICAgIHwgIHwKLSAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAg
ICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8
Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8Ci0gICAgICAgICAg
ICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICA0OTAgICAgICAgICAgICAgfAotICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTAwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1
c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJl
YWR5T25TdGFjaywgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlP
blN0YWNrKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2Zm
QXhpc1N1cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBj
aGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJm
YWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxk
KGxheWVyKTsKLQotICAgIC8vIE5vdyByb3RhdGUgdGhlIGNoaWxkIGEgbGl0dGxlIG1vcmUgc28g
aXQgaXMgbm90IGF4aXMtYWxpZ25lZC4gVGhlIHBhcmVudCB3aWxsIG5vIGxvbmdlciBiZSBvY2Ns
dWRlZCBieSB8bGF5ZXJ8LCBidXQKLSAgICAvLyB0aGUgY2hpbGQncyBvY2NsdXNpb24gc2hvdWxk
IGJlIHVuY2hhbmdlZC4KLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3Jt
OwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFu
c2Zvcm0ucm90YXRlKDk1KTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1
MCk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXll
clRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAw
LCA1MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBs
YXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLQot
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxh
eWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIElu
dFJlY3QgY2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXIt
PnZpc2libGVMYXllclJlY3QoKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoY2xpcHBlZExheWVySW5DaGlsZCwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0K
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRM
YXllckluQ2hpbGQpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAg
ICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGls
ZC5tb3ZlKDEsIDApOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJ
bkNoaWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgIGNs
aXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5t
b3ZlKDAsIC0xKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdl
dCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5p
c0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKLSAgICBjbGlw
cGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBl
ZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUo
MCwgLTEpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdl
dCgpLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCg3NSwgNTUsIDEsIDEpKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwgNTUs
IDEsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCg3NSwgNTUsIDEsIDEpKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJv
dGF0ZWRPZmZBeGlzU3VyZmFjZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRl
ZE9mZkF4aXNTdXJmYWNlKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhN
dWx0aXBsZU9wYXF1ZUxheWVycyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIGlz
IHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QgYnV0IG5vdyB3ZSBtYWtlIGEgZmV3IG9wYXF1
ZSBsYXllcnMgaW5zaWRlIG9mIHxjaGlsZHwgc28gdGhhdCB0aGUgb2NjbHVkZWQgcGFydHMgb2Yg
Y2hpbGQgYXJlIG5vdCBhIHNpbXBsZSByZWN0LgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsK
LSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIx
KTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1
MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgp
LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA0NDApLCB0cnVlLCBvcGFx
dWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwg
dHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0
OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1
bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0g
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgp
KTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsK
LQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwg
NjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwg
NDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0
MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwg
SW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg3MCwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQu
Z2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMTAsIDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlz
aGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwg
NjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3
MCwgNjApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjAp
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAs
IDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDEs
IDcwLCA2MCkpKTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNp
b24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6Ci0KLSAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9u
IG9mIHxsYXllcjF8OiAvLy8vLwotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgIFZp
c2libGUgcmVnaW9uIG9mIHxsYXllcjJ8OiBcXFxcXAotICAgICAgIHwgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwx
MCAgICAgICAgICAgICAgIHwKLSAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tKyAgfAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98ICAgICA0MjAgICAgICB8
ICB8Ci0gICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3w2MCAgICAgICAgICAgIHwgIHwKLSAg
ICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAgICst
LXwtLXwtLS0tLS0tLS0tLS18LS0rICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgIDIwfDEwfCAg
ICAgNzAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
fCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0g
ICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwxMHwKLSAgICAgICAg
ICB8ICArLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tKwotICAgICAgICAgIHwgICAg
ICAgICAgICAgICB8IDQ5MCAgICAgICAgICAgICB8Ci0gICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICA2MCAgICAgICAgICAgICAgIDQ0
MAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1
ZUxheWVycywgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXll
cnMpOwotCi12b2lkIHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFj
ZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdo
dCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQx
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICBwYXJlbnQtPmFkZENoaWxk
KGNoaWxkMik7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChsYXllcjEpOwotICAgIGNoaWxkMi0+YWRk
Q2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3Jt
OwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFu
c2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1
MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBG
bG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hp
bGQxLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxh
eWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAx
MDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDQwLCA4MCwg
NjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDIwLCA2MCwgODApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIElu
dFJlY3QoMCwgNDIwLCA2MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEsIDQyMCwgNjAsIDgwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQxOSwg
NjAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdl
dCgpLCBJbnRSZWN0KDAsIDQyMCwgNjEsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQyMCwgNjAsIDgxKSkpOwotCi0g
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0gICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIuZ2V0KCksIGNoaWxk
Mi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCA0MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgwLCA0MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMSwgNDMw
LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEu
Z2V0KCksIEludFJlY3QoMCwgNDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MSwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3Qo
MCwgNDMwLCA3MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0K
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzAsIDgw
LCA3MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDI5LCA3MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDIwLCA0MCwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDE5LCA0MCwgODAsIDYwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDIwLCAzOSwgODAsIDYwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFi
b3ZlIG9jY2x1c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIDMwICAg
ICAgICAgICAgICAgfCAgICAgICBjaGlsZDEKLSAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi0gIDEwMCB8ICA0MHwgICAgICAgICAgICAgICAgfCAgICAgY2hp
bGQyICAgICAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
IHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAotICAgICAgfCAgfCB8
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAgICstLXwtfC0tLS0tLS0t
LS0tLS0tLS0rICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfCA1MDAKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwK
LSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCi0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUwMAotICAgICAqLwotfQotCi1URVNUX09Q
QVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2Nj
bHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzLCBzdXJmYWNlT2NjbHVzaW9uV2l0
aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKTsKLQotdm9pZCBzdXJmYWNlT2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQg
dGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHBhcmVudC0+
YWRkQ2hpbGQoY2hpbGQyKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVyMSk7Ci0gICAgY2hp
bGQyLT5hZGRDaGlsZChsYXllcjIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRU
cmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBj
aGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgt
MjUwLCAtMjUwKTsKLQotICAgIC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJl
bnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
cjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1
MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCks
IEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXll
cjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1
MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyBNYWtlIHRoZW0gYm90aCBy
ZW5kZXIgc3VyZmFjZXMKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVy
cy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgY2hpbGQx
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
LQotICAgIGNoaWxkMS0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgY2hpbGQyLT5zZXRN
YXNrc1RvQm91bmRzKGZhbHNlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
LQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBS
ZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0
KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0K
LSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwg
LTIwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAs
IDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwg
ODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCks
IEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0x
MCwgNDIwLCA3MCwgODEpKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3Nv
clJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgp
LCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEw
LCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgx
KSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAs
IDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihj
aGlsZDIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
Y2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsK
LQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQz
MCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQx
LmdldCgpLCBJbnRSZWN0KC0xMSwgNDMwLCA4MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MjksIDgwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50
UmVjdCgtMTAsIDQzMCwgODEsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7Ci0KLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2Ns
dXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwg
ODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkpKTsKLQotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDIwLCA3MCwgODAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMjksIDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDE5LCA3MCwgODApKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzMCwg
ODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDE5LCAzMCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAyOSwgODAsIDcwKSkpOwotCi0g
ICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKLSAgICAgICAgICAg
ICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHwgICAgMjAgICAg
ICAgICAgICAgICB8ICAgICAgIGxheWVyMQotICAgICAgfCAgMzArIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHwgIDMwfCAgICAgICAgICAgICAgICB8ICAgICBsYXll
cjIgICAgICB8Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg
fAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAg
IHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAgICB8ICB8IHwg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAotICAgICAgKy0tfC18LS0tLS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8IDUxMAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAot
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS18LSsKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfAotICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgNTEwCi0gICAgICovCi19Ci0KLVRFU1RfT1BB
UVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2Ns
dXNpb25JblNjcmVlblNwYWNlLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk7Ci0KLXZv
aWQgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKGJvb2wg
b3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNm
b3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAg
ICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMSk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIp
OwotICAgIGNoaWxkMS0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBjaGlsZDItPmFkZENoaWxkKGxh
eWVyMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDFUcmFuc2Zvcm07Ci0gICAg
Y2hpbGQxVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGQxVHJhbnNmb3Jt
LnJvdGF0ZSgtOTApOwotICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDJUcmFuc2Zvcm07Ci0gICAgY2hpbGQy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0
ZSg5MCk7Ci0gICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAg
IC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhl
IHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0
KCksIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEwLCAxMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUoNTEwLCA1MjApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdl
dCgpLCBjaGlsZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSwg
b3BhcXVlTGF5ZXJzKTsKLQotICAgIC8vIE1ha2UgdGhlbSBib3RoIHJlbmRlciBzdXJmYWNlcwot
ICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwg
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBjaGlsZDEtPnNldEZpbHRlcnMoZmls
dGVycyk7Ci0gICAgY2hpbGQyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgY2hpbGQxLT5z
ZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKLSAgICBjaGlsZDItPnNldE1hc2tzVG9Cb3VuZHMoZmFs
c2UpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJM
aXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEwMDAp
KTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cjIuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRS
ZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQx
OSwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkp
KTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkp
OwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgp
LCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRS
ZWN0KDQxOSwgLTIwLCA4MCwgOTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMjEsIDgwLCA5MCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0x
OSwgODAsIDkwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQx
LmdldCgpLCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNo
ZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAs
IDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDEwLCAyMCwgOTAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDE5LCA5
MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMTEsIDIwLCA5MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7Ci0KLSAg
ICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgotICAgICAgICAgICAg
ICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfDIwICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgbGF5ZXIxCi0gICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi0gIDEwMCB8fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8
Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHx8
IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgfHwgfCAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICB8fCB8ICAgICAgICAgICAgICAgICAg
fCAgICAgICAgICAgICB8IHwKLSAgICAgICt8LXwtLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAg
ICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUx
MAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTAgfCB8Ci0gICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgNTIwICAgICAgICAgICAgIHwgfAot
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8Ci0gICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAot
ICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9y
bXMsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyk7Ci0K
LXZvaWQgb2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycyhib29sIG9wYXF1ZUxheWVycykK
LXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5n
IHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gYmx1ckxh
eWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3BhY2l0
eUxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3Bh
cXVlTGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5h
ZGRDaGlsZChibHVyTGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQob3BhY2l0eUxheWVyKTsK
LSAgICBwYXJlbnQtPmFkZENoaWxkKG9wYXF1ZUxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAs
IDI1MCk7Ci0gICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBsYXllclRyYW5zZm9y
bS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGJsdXJMYXll
ci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhvcGFxdWVMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMw
KSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFjaXR5TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBG
bG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBt
X29wYXF1ZUxheWVycyA9IG9wYXF1ZUxheWVyczsKKyAgICB9CiAKKyAgICBQYXNzT3duUHRyPENv
bnRlbnRMYXllclR5cGU+IGNyZWF0ZVJvb3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5k
cywgYm9vbCBvcGFxdWUpCiAgICAgewotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7
Ci0gICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoTGVuZ3RoKDEwLCBXZWJDb3JlOjpQZXJjZW50KSwgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSKSk7Ci0gICAgICAgIGJsdXJMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAg
T3duUHRyPENvbnRlbnRMYXllclR5cGU+IGxheWVyID0gYWRvcHRQdHIobmV3IENvbnRlbnRMYXll
clR5cGUoKSk7CisKKyAgICAgICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAg
ICAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7
CisgICAgICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAg
ICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgbGF5ZXItPnNldEJvdW5k
cyhib3VuZHMpOworICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyLmdldCgpKTsKKworICAgICAg
ICBpZiAobV9vcGFxdWVMYXllcnMpCisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlKG9wYXF1
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShmYWxzZSk7
CisgICAgICAgICAgICBpZiAob3BhcXVlKQorICAgICAgICAgICAgICAgIGxheWVyLT5zZXRPcGFx
dWVDb250ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJl
Y3QoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogICAg
IH0KIAorICAgIExheWVyVHlwZSogY3JlYXRlTGF5ZXIoTGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgeworICAgICAgICBPd25QdHI8TGF5ZXJU
eXBlPiBsYXllciA9IGNyZWF0ZShwYXJlbnQpOworCisgICAgICAgIGxheWVyLT5zZXRUcmFuc2Zv
cm0odHJhbnNmb3JtKTsKKyAgICAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7CisgICAgICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAg
ICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKKyAgICAgICAgc2V0UHJvcGVydGllcyhsYXll
ci5nZXQoKSk7CisKKyAgICAgICAgTGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVyLmdldCgpOwor
ICAgICAgICBhZGRDaGlsZChwYXJlbnQsIGxheWVyLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVy
biBsYXllclB0cjsKKyAgICB9CisKKyAgICBMYXllclR5cGUqIGNyZWF0ZVN1cmZhY2UoTGF5ZXJU
eXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCisgICAgeworICAg
ICAgICBMYXllclR5cGUqIGxheWVyID0gY3JlYXRlTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIHBv
c2l0aW9uLCBib3VuZHMpOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CiAgICAg
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwot
ICAgICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgbGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIHJldHVybiBsYXllcjsKKyAgICB9CisKKyAg
ICBDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nTGF5ZXIoTGF5ZXJUeXBlKiBwYXJlbnQs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQorICAgIHsKKyAg
ICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IGxheWVyID0gYWRvcHRQdHIobmV3IENvbnRl
bnRMYXllclR5cGUoKSk7CisKKyAgICAgICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0p
OworICAgICAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSk7CisgICAgICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsK
KyAgICAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgbGF5ZXItPnNl
dEJvdW5kcyhib3VuZHMpOworICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyLmdldCgpKTsKKwor
ICAgICAgICBpZiAobV9vcGFxdWVMYXllcnMpCisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVl
KG9wYXF1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShm
YWxzZSk7CisgICAgICAgICAgICBpZiAob3BhcXVlKQorICAgICAgICAgICAgICAgIGxheWVyLT5z
ZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0
KEludFJlY3QoKSk7CisgICAgICAgIH0KKworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXll
clB0ciA9IGxheWVyLmdldCgpOworICAgICAgICBhZGRDaGlsZChwYXJlbnQsIGxheWVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBsYXllclB0cjsKICAgICB9CiAKKyAgICBDb250ZW50TGF5
ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFjZShMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCiAgICAgeworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IGNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRyYW5zZm9y
bSwgcG9zaXRpb24sIGJvdW5kcywgb3BhcXVlKTsKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpP
UEFDSVRZKSk7Ci0gICAgICAgIG9wYWNpdHlMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7
CisgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICByZXR1cm4gbGF5
ZXI7CiAgICAgfQogCiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVt
bXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0KLSAgICAvLyBPcGFjaXR5IGxheWVyIHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVz
aW9uLgotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihvcGFjaXR5TGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRl
clN1cmZhY2Uob3BhY2l0eUxheWVyLmdldCgpLCBvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBBbmQgaGFzIG5vdGhpbmcgdG8gY29udHJp
YnV0ZSB0byBpdHMgcGFyZW50IHN1cmZhY2UuCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0K
LSAgICAvLyBPcGFxdWUgbGF5ZXIgd2lsbCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFxdWVMYXll
ci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFx
dWVMYXllci5nZXQoKSwgb3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDQzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBBbmQgaXQgZ2V0cyB0
cmFuc2xhdGVkIHRvIHRoZSBwYXJlbnQgc3VyZmFjZS4KLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIC8vIFRoZSBibHVyIGxheWVyIG5l
ZWRzIHRvIHRocm93IGF3YXkgYW55IG9jY2x1c2lvbiBmcm9tIG91dHNpZGUgaXRzIHN1YnRyZWUu
Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXItPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0gICAgLy8gQW5kIGl0IHdvbid0IGNvbnRy
aWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihibHVyTGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1
cmZhY2UoYmx1ckxheWVyLmdldCgpLCBibHVyTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5p
c0VtcHR5KCkpOwotCi0gICAgLy8gQnV0IHRoZSBvcGFxdWUgbGF5ZXIncyBvY2NsdXNpb24gaXMg
cHJlc2VydmVkIG9uIHRoZSBwYXJlbnQuCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X29jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMs
IG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMpOwotCi12b2lkIGxheWVyU2Npc3NvclJl
Y3RPdmVyVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRk
Q2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRl
cnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVu
dExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVl
TGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUs
IG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAg
ICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29y
UmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKLQotICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotfQotCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXll
clNjaXNzb3JSZWN0T3ZlclRpbGUsIGxheWVyU2Npc3NvclJlY3RPdmVyVGlsZSk7Ci0KLXZvaWQg
c2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwot
ICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKiBj
YWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVySW1wbCogcm9vdCwgUGFzc093blB0cjxDQ0xheWVy
SW1wbD4gcGFzc1Jvb3QpCisgICAgeworICAgICAgICBBU1NFUlQocm9vdCA9PSBwYXNzUm9vdC5n
ZXQoKSk7CisgICAgICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0OworICAg
ICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgICAgICBBU1NFUlQoIXJv
b3QtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2Uo
KTsKKyAgICAgICAgcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7CisgICAgICAgIHJvb3QtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKKyAgICAg
ICAgbV9yb290SW1wbCA9IHBhc3NSb290OworICAgICAgICBtX3JlbmRlclN1cmZhY2VMYXllckxp
c3RJbXBsLmFwcGVuZChtX3Jvb3RJbXBsLmdldCgpKTsKKworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCByb290
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlz
dEltcGwsIGR1bW15TGF5ZXJMaXN0LCAwLCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAg
cmV0dXJuIHJvb3Q7CisgICAgfQogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAg
IGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAg
IHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOworICAgIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSogY2FsY0RyYXdFdGMoVGVz
dENvbnRlbnRMYXllckNocm9taXVtKiByb290LCBQYXNzT3duUHRyPExheWVyQ2hyb21pdW0+IHBh
c3NSb290KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJvb3QgPT0gcGFzc1Jvb3QuZ2V0KCkpOwor
ICAgICAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Cisg
ICAgICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgICAgIEFTU0VSVCgh
cm9vdC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgcm9vdC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOworICAgICAgICByb290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0
Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOworICAg
ICAgICBtX3Jvb3RDaHJvbWl1bSA9IGFkb3B0UmVmKHBhc3NSb290LmxlYWtQdHIoKSk7CisgICAg
ICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9taXVtLmFwcGVuZChtX3Jvb3RDaHJvbWl1
bSk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkocm9vdCwgcm9vdCwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bSwgZHVtbXlMYXllckxpc3QsIGR1
bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICByZXR1cm4gcm9vdDsKKyAgICB9CiAKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJz
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcnVuTXlUZXN0KCkgPSAwOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRl
eHR1cmVTaXplID0gNTEyOworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+
c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKK3ByaXZhdGU6Cisg
ICAgdm9pZCBzZXRQcm9wZXJ0aWVzKExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIHNldFByb3BlcnRpZXMoQ0NMYXllckltcGwqIGxheWVyKQorICAgIHsKKyAg
ICAgICAgbGF5ZXItPnNldENvbnRlbnRCb3VuZHMobGF5ZXItPmJvdW5kcygpKTsKKyAgICB9CiAK
LSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlN
YXhUZXh0dXJlU2l6ZSk7CisgICAgUGFzc093blB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoTGF5
ZXJDaHJvbWl1bSogcGFyZW50KQorICAgIHsKKyAgICAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihsYXllci5yZWxlYXNlKCkubGVha1JlZigpKTsKKyAgICB9CiAKLSAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgIFBh
c3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZShDQ0xheWVySW1wbCogcGFyZW50KQorICAgIHsK
KyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
bmV4dENDTGF5ZXJJbXBsSWQrKyk7CisgICAgICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7Cisg
ICAgfQogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICB2b2lkIGFkZENoaWxkKENDTGF5ZXJJbXBsKiBwYXJlbnQsIFBh
c3NPd25QdHI8Q0NMYXllckltcGw+IGNoaWxkKQorICAgIHsKKyAgICAgICAgcGFyZW50LT5hZGRD
aGlsZChjaGlsZCk7CisgICAgfQogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgdm9p
ZCBhZGRDaGlsZChMYXllckNocm9taXVtKiBwYXJlbnQsIFBhc3NPd25QdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGQpCisgICAgeworICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGFkb3B0UmVmKGNoaWxk
LmxlYWtQdHIoKSkpOworICAgIH0KIAotICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRl
IHRoZSBzdXJmYWNlIGJvdW5kcy4KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIGJvb2wgbV9v
cGFxdWVMYXllcnM7CisgICAgLy8gVGhlc2UgaG9sZCBvd25lcnNoaXAgb2YgdGhlIGxheWVycyBm
b3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgorICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBt
X3Jvb3RDaHJvbWl1bTsKKyAgICBPd25QdHI8Q0NMYXllckltcGw+IG1fcm9vdEltcGw7CisgICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENo
cm9taXVtOworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlz
dEltcGw7Cit9OwogCi0gICAgLy8gVGVzdCB3aXRob3V0IGFueSBzY2lzc29ycy4KLSAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3Nv
clJlY3QoKTsKKyNkZWZpbmUgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFz
c05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVMYXllcnMgOiBw
dWJsaWMgQ2xhc3NOYW1lPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgVGVz
dENvbnRlbnRMYXllckNocm9taXVtLCB0cnVlPiB7IH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1l
IyNNYWluVGhyZWFkT3BhcXVlTGF5ZXJzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisjZGVm
aW5lIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCisgICAg
Y2xhc3MgQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFt
ZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIFRlc3RDb250ZW50TGF5ZXJD
aHJvbWl1bSwgZmFsc2U+IHsgfTsgXAorICAgIFRFU1RfRihDbGFzc05hbWUjI01haW5UaHJlYWRP
cGFxdWVQYWludHMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KKworI2RlZmluZSBSVU5fVEVT
VF9JTVBMX1RIUkVBRF9PUEFRVUVfTEFZRVJTX1JFTEVBU0UoQ2xhc3NOYW1lKSBcCisgICAgY2xh
c3MgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlTGF5ZXJzIDogcHVibGljIENsYXNzTmFtZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBUZXN0Q29udGVudExheWVySW1wbCwgdHJ1ZT4g
eyB9OyBcCisgICAgVEVTVF9GKENsYXNzTmFtZSMjSW1wbFRocmVhZE9wYXF1ZUxheWVycywgcnVu
VGVzdCkgeyBydW5NeVRlc3QoKTsgfQorI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFR
VUVfUEFJTlRTX1JFTEVBU0UoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBs
VGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFtZTxDQ0xheWVySW1wbCwgQ0NSZW5k
ZXJTdXJmYWNlLCBUZXN0Q29udGVudExheWVySW1wbCwgZmFsc2U+IHsgfTsgXAorICAgIFRFU1Rf
RihDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0
KCk7IH0KKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSU19ERUJVRyhD
bGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMg
OiBwdWJsaWMgQ2xhc3NOYW1lPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIFRlc3RDb250
ZW50TGF5ZXJJbXBsLCB0cnVlPiB7IH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhy
ZWFkT3BhcXVlTGF5ZXJzLCBydW5UZXN0KSBcCisgICAgeyBcCisgICAgICAgIENDUHJveHk6OnNl
dEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQodHJ1ZSk7IFwKKyAgICAgICAgcnVuTXlUZXN0KCk7
IFwKKyAgICB9CisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9QQUlOVFNfREVC
VUcoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlUGFp
bnRzIDogcHVibGljIENsYXNzTmFtZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBUZXN0
Q29udGVudExheWVySW1wbCwgZmFsc2U+IHsgfTsgXAorICAgIFRFU1RfRihDbGFzc05hbWUjI0lt
cGxUaHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3QpIFwKKyAgICB7IFwKKyAgICAgICAgQ0NQcm94
eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZCh0cnVlKTsgXAorICAgICAgICBydW5NeVRl
c3QoKTsgXAorICAgIH0KIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworI2lmbmRlZiBOREVCVUcKKyNk
ZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyBSVU5fVEVTVF9JTVBMX1RI
UkVBRF9PUEFRVUVfTEFZRVJTX0RFQlVHCisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09Q
QVFVRV9QQUlOVFMgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX1BBSU5UU19ERUJVRworI2Vs
c2UKKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyBSVU5fVEVTVF9J
TVBMX1RIUkVBRF9PUEFRVUVfTEFZRVJTX1JFTEVBU0UKKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9U
SFJFQURfT1BBUVVFX1BBSU5UUyBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfUEFJTlRTX1JF
TEVBU0UKKyNlbmRpZgorCisjZGVmaW5lIEFMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDbGFz
c05hbWUpIFwKKyAgICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFt
ZSkgXAorICAgIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBc
CisgICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAg
ICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfUEFJTlRTKENsYXNzTmFtZSkKKworI2RlZmlu
ZSBNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX01B
SU5fVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfSU1QTF9U
SFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpCisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5
cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdElkZW50
aXR5VHJhbnNmb3JtcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250
ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAg
ICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50
LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVh
c2UoKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAz
MCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNl
RGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcw
KSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDI5LCA3MCwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDI5LCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAzMCwgMSwgNzApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMSwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAx
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMx
LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwg
MzEsIDcwLCA3MCkpKTsKKyAgICB9Cit9OwogCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLX0KK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zKTsKIAot
VEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2Ny
ZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwgc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSk7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi12
b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsK
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50
TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICBPd25QdHI8Q29u
dGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAg
ICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAg
IENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVu
dCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCks
IHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkp
OwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9u
cygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
MC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVy
cyk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAy
OSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisKKyAg
ICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3
MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAz
MCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwg
MjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDI5LCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDMxLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7CisgICAgfQorfTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0Um90YXRlZENoaWxkKTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVy
cz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQgOiBwdWJsaWMg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250
ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15
VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9y
bTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CiAKLSAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShw
YXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlz
LT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9
IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlz
LT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBh
cmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1
MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKworICAgICAg
ICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDUwLCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1
MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAx
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5
LCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwg
NTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
NDksIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5
LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0
OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoNTEsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAw
LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1
MSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDUwLCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNDksIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVm
YXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUw
LCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNDksIDUwLCA1MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA0OSwg
NTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNDks
IDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDQ5LCAx
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDQ5
LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTEs
IDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDks
IDUxLCAxLCA0OSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICB9Cit9OwogCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAx
MDAsIDEwMCwgMTAwKSkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwg
b3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsK
KyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3Jt
LnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUw
KTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlw
ZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIExheWVyVHlwZSog
Y2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICAgICAgY2hpbGQtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRj
KHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotfQorICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwogCi1URVNUX09QQVFVRV9B
TkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0
T3ZlckN1bGxlZFRpbGUsIGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSk7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQz
MCwgNjEsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNl
RGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJl
Y3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkp
OworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y2hpbGQpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAs
IDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgNDAs
IDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURl
ZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkp
KTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CisKKworICAgICAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUg
b2NjbHVzaW9uIGZyb20gfGxheWVyfDoKKyAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KKyAgICAgICAg
ICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8IDMwICsgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIDEwMCB8ICAgIHwgIDEwICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgID09PiAgICAgfCAgICAgfCAgICAg
ICAgICAgICAgIHwxMCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgIHwxMCstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8v
Ly8vLy8vLy8vL3wgICAgIDQyMCAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8v
Ly8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8v
Ly8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICArLS0tLXwtLXwtLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEwfCAgICAg
NzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwxMHwKKyAgICAgICAgICAgICAgICstLXwtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgNDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTAwCisgICAgICAgICAqLworICAgIH0KK307CiAKLXZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVy
Q3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRk
Q2hpbGQobGF5ZXIpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmls
dGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+
c2V0RmlsdGVycyhmaWx0ZXJzKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5h
bWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3Bh
cXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdvVGlt
ZXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
aGlsZFRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUw
KTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgY2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIE93blB0cjxDb250ZW50TGF5
ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAgICAgIENv
bnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgTGF5ZXJU
eXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZs
b2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0
TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgLy8gfGNo
aWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdldCBjb25zaWRlcmVkIGJ5IENDT2NjbHVz
aW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hpbGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRp
ZmZlcmVudCBjb2RlIGluCisgICAgICAgIC8vIGxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlLCBh
cyB0aGUgdGFyZ2V0IHN1cmZhY2UgaGFzIGFscmVhZHkgYmVlbiBzZWVuLgorICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCks
IHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkp
OworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwg
MTAwMCkpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9
IDUxMjsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAs
IDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0
KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkp
OworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQz
MCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
SW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxpdHRs
ZSBwaWVjZSBub3Qgb2NjbHVkZWQgYnkgY2hpbGQyCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoOSwgNDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBw
YXN0IGJvdGggc2lkZXMgb2YgY2hpbGQyLCBzbyBpdCB3aWxsIGJlIHRoZSBvcmlnaW5hbCByZWN0
LgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkp
KTsKKyAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdHdvIGFkamFjZW50IHNpZGVzIG9mIGNo
aWxkMiwgYW5kIHNob3VsZCBpbmNsdWRlZCB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNp
ZGUuCisgICAgICAgIC8vIFRoaXMgYWxzbyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGUgcmVjdCBjYW4g
YmUgYXJiaXRyYXJ5IGFuZCBkb2VzIG5vdCBnZXQgY2xpcHBlZCB0byB0aGUgbGF5ZXIncyB2aXNp
YmxlTGF5ZXJSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAs
IDIwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3Qo
LTEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdGhyZWUg
YWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBzbyBpdCBzaG91bGQgY29udGFpbiB0aGUgdW5vY2Ns
dWRlZCBwYXJ0cyBvZiBlYWNoIHNpZGUuIFRoZSBsZWZ0CisgICAgICAgIC8vIGFuZCBib3R0b20g
ZWRnZXMgYXJlIGNvbXBsZXRlbHkgdW5vY2NsdWRlZCBmb3Igc29tZSByb3cvY29sdW1uIHNvIHdl
IGdldCBiYWNrIHRoZSBvcmlnaW5hbCBxdWVyeSByZWN0LgorICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMTAsIDQyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQz
MCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpLmlzRW1w
dHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0
KC0xMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwg
ODApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpLmlzRW1wdHkoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwg
NDMxLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOworICAgICAgICAvLyB8Y2hpbGQyfCBzaG91
bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5vdworICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMwLCAxMCwgMTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsK
KworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMwLCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMxLCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwg
MzAsIDYwLCAxMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjksIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgzMCwgMjksIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg5MCwgMzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSku
aXNFbXB0eSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwor
ICAgICAgICAvLyBUaGlzIHJlY3QgaXMgbW9zdGx5IG9jY2x1ZGVkIGJ5IHxjaGlsZDJ8LgorICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzOSwgMTAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAg
ICAgICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCB0b3AvcmlnaHQgZW5kcyBvZiB8Y2hpbGQy
fC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcw
KSkpOworICAgICAgICAvLyBUaGlzIHJlY3QgZXh0ZW5kcyBwYXN0IGxlZnQvcmlnaHQgZW5kcyBv
ZiB8Y2hpbGQyfC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzksIDgwLCA2
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwLCAz
OSwgODAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNDAsIDEs
IDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEs
IDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwg
NzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgz
MCwgNDEsIDcwLCA2MCkpKTsKKworICAgICAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJv
dmUgb2NjbHVzaW9uIGZyb20gfGxheWVyfDoKKyAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KKyAgICAg
ICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAg
ICAgICAgICAgfCAgICAgMzAgICA2MCAgICAgICAgIHwgICAgfGNoaWxkMnw6IFxcXFxcCisgICAg
ICAgICAgfCAzMCArIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg
ICAgICAgICAgIHwgIDMwICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICAxMDAgfCAgICB8ICAxMCAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICA9PT4gICAgIHwgICAgIHxcXFxcXFxcXFxcXFx8ICB8MTAgICAgICAgICAgICAgICB8CisgICAg
ICAgICAgfCAgICB8MTArLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgIHwgICstLXxcXFxcXFxcXFxcXFx8LS0tLS0tLS0tLS0tLS0tLS0rICB8CisgICAg
ICAgICAgfCAgICArIC0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgIHwgIHwgICstLS0tLS0tLS0tLS0rLy98ICAgICA0MjAgICAgICB8ICB8CisgICAg
ICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgKy0tLS18LS18LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICstLXwtLXwtLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfDUwMCAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8CisgICAg
ICAgICAgICAgICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAg
ICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAgICAgICB8CisgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUwMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAg
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lcyk7CiAKLSAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShw
YXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2Ns
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXMgOiBwdWJsaWMg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250
ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15
VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9y
bTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAg
Y2hpbGRUcmFuc2Zvcm0ucm90YXRlKDk1KTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJh
bnNmb3JtOworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKKworICAg
ICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQu
Z2V0KCk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJl
bnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
KTsKKyAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgICAgIENvbnRl
bnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCBsYXll
clRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwor
ICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAg
ICAgICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5ZXJUcmFuc2Zvcm0ubWFwUmVj
dChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKGNsaXBwZWRM
YXllckluQ2hpbGQsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllcklu
Q2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwg
MCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBw
ZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwor
ICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7CisgICAgICAgIGNsaXBwZWRM
YXllckluQ2hpbGQubW92ZSgxLCAwKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllcklu
Q2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwg
MCk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgICAgICBjbGlwcGVk
TGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92
ZSgwLCAxKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
Y2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHko
KSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
NzUsIDU1LCAxLCAxKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDc1LCA1NSwg
MSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDc1
LCA1NSwgMSwgMSkpKTsKKyAgICB9Cit9OwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBv
Y2NsdXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzKTsK
IAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4K
K2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxkcmVu
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAg
dm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hp
bGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7
CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICBPd25QdHI8Q29udGVudExheWVy
VHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIExheWVyVHlw
ZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9h
dFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICAgICAgY2hpbGQtPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBsYXllcjIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCA0NTApLCBJbnRTaXplKDUwMCwgNjApLCB0
cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsK
KworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcjIpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIxKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwg
NjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50
UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7CisgICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAs
IDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcw
LCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3
MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAs
IDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0
MSwgNzAsIDYwKSkpOworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBv
Y2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6CisKKyAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAg
VmlzaWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8vLy8vCisgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjJ8OiBcXFxcXAorICAgICAg
ICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAg
ICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAorICAgICAgICAgICB8
ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAgfAorICAgICAgICAgICB8ICB8
ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAgICAgfCAgfAorICAgICAgICAgICB8ICB8ICB8
XFxcXFxcXFxcXFxcfC8vfDYwICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8ICB8XFxc
XFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICArLS18LS18LS0tLS0t
LS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAg
ICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgfDEwfAorICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0t
fC0tKworICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCA0OTAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICAgICAg
ICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAgICA0NDAKKyAgICAgICAgICovCisgICAgfQor
fTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJf
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik7
CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRM
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wg
b3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3Vy
ZmFjZVNpYmxpbmdzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90
ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAg
IGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICBPd25QdHI8
Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOwor
ICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAg
ICAgIExheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxk
VHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAsIDEwKSk7CisgICAgICAg
IExheWVyVHlwZSogY2hpbGQyID0gdGhpcy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkVHJh
bnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIENv
bnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDEs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAs
IDUxMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllcjIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQyLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdF
dGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMik7CisKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgt
MTAsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50
UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOworCisgICAgICAg
IG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJl
Y3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwg
ODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIElu
dFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIpOworICAgICAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMiwgY2hpbGQyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KC0xMCwgNDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgt
MTEsIDQzMCwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQyOSwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODEsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50
UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihjaGlsZDEpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkMSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyMCwgNzAsIDgwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMjAs
IDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzAsIDE5LCA3MCwgODApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTksIDMw
LCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwLCAyOSwgODAsIDcwKSkpOworCisgICAgICAgIC8qIEp1c3RpZmljYXRp
b24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246CisgICAgICAgICAgICAgICAgICAgMTAwCisgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8ICAgIDIwICAgICAgICAg
ICAgICAgfCAgICAgICBsYXllcjEKKyAgICAgICAgICB8ICAzMCsgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgMTAwIHwgIDMwfCAgICAgICAgICAgICAgICB8ICAgICBs
YXllcjIgICAgICB8CisgICAgICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rIHwKKyAgICAgICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
IHwgfAorICAgICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8
CisgICAgICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAg
ICAgICAgICArLS18LXwtLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwgfAorICAgICAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUxMAorICAgICAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAg
ICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfC0rCisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAorICAgICAgICAgKi8K
KyAgICB9Cit9OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VS
X1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzKTsK
IAotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRl
clN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVy
cz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5n
c1dpdGhUd29UcmFuc2Zvcm1zIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY2hpbGQxVHJhbnNmb3JtOworICAgICAgICBjaGlsZDFUcmFuc2Zvcm0u
dHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgtOTAp
OworICAgICAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkMlRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGQy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkMlRyYW5zZm9ybS5y
b3RhdGUoOTApOworICAgICAgICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTAp
OworCisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5j
cmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93
blBhcmVudC5nZXQoKTsKKyAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVhdGVT
dXJmYWNlKHBhcmVudCwgY2hpbGQxVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAyMCksIEludFNp
emUoMTAsIDEwKSk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQyID0gdGhpcy0+Y3JlYXRlU3Vy
ZmFjZShwYXJlbnQsIGNoaWxkMlRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXpl
KDEwLCAxMCkpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nTGF5ZXIoY2hpbGQxLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgt
MTAsIC0yMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVy
VHlwZSogbGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1
ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAw
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcjIpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwg
NzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIElu
dFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAs
IDcwLCA4MSkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y2hpbGQyKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShj
aGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOwor
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotfQorICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwg
LTIwLCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQxLCBJbnRSZWN0KDQxOSwgLTIwLCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwgLTIxLCA4MCwgOTApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0
KDQyMCwgLTE5LCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7CiAKLVRFU1RfT1BBUVVF
X0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JS
ZWN0T3ZlckN1bGxlZFRpbGUsIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOworICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKKyAgICAgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdm9pZCBsYXllclNjaXNzb3JSZWN0T3Zl
clBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+
YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBh
cmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0K
LSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgp
LCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0g
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCg1MCwgNTAs
IDIwMCwgMjAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIw
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwg
NTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotfQotCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXll
clNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFs
VGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9w
YXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+
YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0g
ICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFw
cGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBG
aWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0K
LSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0g
ICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlM
YXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7Ci0KLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgw
LCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGls
ZXMsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk7Ci0KLXZvaWQgbGF5ZXJTY2lz
c29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0g
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0g
ICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
LCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUw
MCwgNTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsK
LSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgp
KTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzLCBsYXllclNjaXNzb3JSZWN0T3Zlck5v
VGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVM
YXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFy
ZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBs
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENo
aWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEw
MCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwg
MTAwLCAxMDApKS5pc0VtcHR5KCkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzLCBz
Y3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsKLQotdm9pZCBsYXllclNjaXNzb3JSZWN0Rm9y
TGF5ZXJPZmZPcmlnaW4oYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAs
IDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwg
OTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDEwLCAxOSwgOTAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMSwgMjAsIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7
CisKKyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAg
ICAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgICAgICAgICB8MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKKyAg
ICAgICAgICAgMTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAg
MTAwIHx8IDMwICAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgIHwKKyAgICAgICAgICAgIHwy
MCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgfHwgfCAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8ICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgIHx8IHwgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgK3wtfC0tLS0tLS0tLS0tLS0t
LS0tLSsgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgNTEwCisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUxMCB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICA1MjAgICAgICAgICAgICAgfCB8Cisg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTEwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CitBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdz
V2l0aFR3b1RyYW5zZm9ybXMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
LCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVy
VHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0Rmls
dGVycyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGxheWVyVHJhbnNmb3JtOworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOworICAgICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBsYXllclRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNp
emUgPSA1MTI7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0
aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVu
dCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogYmx1ckxheWVy
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBvcGFjaXR5TGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50
LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwg
dHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIG9wYXF1ZUxheWVyID0gdGhpcy0+Y3Jl
YXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMw
KSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAgICAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0
aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikpOworICAgICAg
ICBibHVyTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCks
IHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAg
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmNsZWFyKCk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0
aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgICAgICBvcGFxdWVMYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBmaWx0ZXJzLm9wZXJh
dGlvbnMoKS5jbGVhcigpOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3Bl
cmF0aW9uOjpPUEFDSVRZKSk7CisgICAgICAgIG9wYWNpdHlMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJl
bGVhc2UoKSk7CiAKLSAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBp
bnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFy
Z2V0IHN1cmZhY2UKLSAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0
ZXIgdHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdp
bGwgZmFsbCBvdXRzaWRlCi0gICAgLy8gdGhlIHNjaXNzb3IgYW5kIGJlIGNvbnNpZGVyZWQgb2Nj
bHVkZWQuCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotfQorICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi1URVNUX09QQVFVRV9B
TkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0
Rm9yTGF5ZXJPZmZPcmlnaW4sIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7Cisg
ICAgICAgIC8vIE9wYWNpdHkgbGF5ZXIgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisg
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIob3BhY2l0eUxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVy
U3VyZmFjZShvcGFjaXR5TGF5ZXIsIG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAot
dm9pZCBkYW1hZ2VSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0
ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAg
ICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKIAotICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgLy8gQW5k
IGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJmYWNlLgorICAgICAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgICAgIC8vIE9w
YXF1ZSBsYXllciB3aWxsIGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgorICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIp
OworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxh
eWVyLCBvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJv
dW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAg
ICAgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFyZW50IHN1cmZhY2UuCisg
ICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBUaGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJv
dyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0cmVlLgorICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKKworICAgICAgICAvLyBBbmQgaXQgd29uJ3Qg
Y29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihibHVyTGF5ZXIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKGJsdXJMYXllciwgYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1w
dHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5pc0VtcHR5KCkpOworCisgICAgICAgIC8vIEJ1dCB0aGUgb3BhcXVlIGxheWVyJ3Mg
b2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgorICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Cisg
ICAgfQorfTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyk7CiAKLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRh
bWFnZShGbG9hdFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0
eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkIDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVu
dExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRl
c3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9
IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFy
ZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2Fs
Y0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
KworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwg
MjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9
OwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVDaGlsZCk7CiAKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxk
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAg
dm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+
IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExh
eWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJU
eXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsK
KyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgb2Nj
bHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7
CisgICAgfQorfTsKIAotICAgIC8vIE91dHNpZGUgdGhlIGxheWVyJ3MgY2xpcCByZWN0LgotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsKIAotICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJT
dXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+
CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91dHNpZGVDaGlsZCA6IHB1
YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUs
IENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQg
cnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25Q
YXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSog
bGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAg
ICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8UmVuZGVyU3VyZmFjZVR5cGU+
IGRhbWFnZShGbG9hdFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CiAKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSkpOwotfQorICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpLmlzRW1wdHko
KSk7CiAKLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0X2RhbWFnZVJlY3RPdmVyVGlsZSwgZGFtYWdlUmVjdE92ZXJUaWxlKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAot
dm9pZCBkYW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9w
dFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVy
KTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAg
RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVu
ZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0
ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxMX0NDT0NDTFVTSU9O
VFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3V0c2lkZUNoaWxk
KTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxh
eWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXll
cnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGls
ZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAg
IHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBl
PiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRM
YXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVy
VHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAg
ICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOwor
CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQor
fTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlz
dDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGls
ZCk7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVu
dExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFx
dWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAg
ICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQu
Z2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQs
IG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIp
OworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAw
LCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CitBTExfQ0NP
Q0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JS
ZWN0T3ZlckNoaWxkKTsKIAotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRM
YXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dERhbWFnZVJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+
IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25Q
dHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUp
OworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7Cisg
ICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZh
Y2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVu
dC5yZWxlYXNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVudDxSZW5kZXJT
dXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwogCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIw
MCkpKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci19CitBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdmVyQ2hpbGQpOwogCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1h
Z2VSZWN0T3ZlckN1bGxlZFRpbGUsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFt
ZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9u
VHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExh
eWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3Qo
KQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRo
aXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50
ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0Ry
YXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworCisgICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAz
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICB9Cit9OwogCi12b2lkIGRhbWFnZVJl
Y3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0g
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0g
ICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
LCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoNTAsIDUwLCAyMDAsIDIw
MCkpOwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCksICZkYW1hZ2UpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5n
ZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAw
LCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwg
NTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RfZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRp
bGVzKTsKLQotdm9pZCBkYW1hZ2VSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVu
dExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJh
dGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9u
OjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFy
ZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1h
eFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsK
LQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVj
dCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKLQotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDAp
KS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAw
LCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyTm9UaWxlcywgZGFtYWdl
UmVjdE92ZXJOb1RpbGVzKTsKLQotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVD
b250ZW50c1JlZ2lvbkVtcHR5KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQobGF5ZXIpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKTsKIAotICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJz
KTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5
cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93
blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVy
VHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBl
KiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAg
ICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7CisgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKSkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAs
IDAsIDMwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAw
LCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICB9Cit9OwogCi0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxzZSwgZmFsc2UpOworQUxMX0NDT0NDTFVT
SU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdFBh
cnRseU92ZXJDaGlsZCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVz
aW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVy
VHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQor
ICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMt
PmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0g
b3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdF
dGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8UmVuZGVyU3VyZmFjZVR5cGU+
IGRhbWFnZShGbG9hdFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0
KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwg
NTAsIDE1MCwgMTUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXllciwgSW50
UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUw
LCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CiAKLSAgICAvLyBPY2NsdWRlZCBzaW5j
ZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
K0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdl
UmVjdFBhcnRseU92ZXJDaGlsZCk7CiAKLSAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNjaXNzb3Jz
LgotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0
TGF5ZXJTY2lzc29yUmVjdCgpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92
ZXJOb3RoaW5nIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0
ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRM
YXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgp
KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwg
MTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEw
MCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkp
OworICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyTm90aGluZyk7CiAKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wg
b3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JS
ZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3By
b3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29u
dGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAg
ICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAg
IENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFy
ZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxl
YXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkp
OworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwg
MjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1w
dHkoKSk7CisgICAgfQorfTsKIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVD
b250ZW50c1JlZ2lvbk5vbkVtcHR5KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJOb3RoaW5nKTsKIAotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBD
b250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFx
dWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAg
ICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQu
Z2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQs
IG93blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OworICAgICAgICBUZXN0RGFtYWdlQ2xpZW50PFJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxv
YXRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5k
cygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChw
YXJlbnQpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIw
MCwgMjAwKSkuaXNFbXB0eSgpKTsKIAotICAgIHsKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIGxheWVy
LT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwog
Ci0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Cisg
ICAgfQorfTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcpOwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDAp
KSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4g
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4g
b3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5
ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5
cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwor
ICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKwor
ICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0
YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZh
Y2UKKyAgICAgICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFmdGVyIHRy
YW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3aWxsIGZh
bGwgb3V0c2lkZQorICAgICAgICAvLyB0aGUgc2Npc3NvciBhbmQgYmUgY29uc2lkZXJlZCBvY2Ns
dWRlZC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgIH0KK307CiAKK0FMTF9DQ09DQ0xVU0lP
TlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxh
eWVyT2ZmT3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBS
ZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVM
YXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25F
bXB0eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBsYXllci0+
c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOworICAgICAgICBP
d25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRy
dWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25Q
YXJlbnQucmVsZWFzZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTIwLCAxMjAsIDE4MCwgMTgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKworICAgICAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFj
ZSBib3VuZHMuCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgLy8gVGVzdCB3aXRob3V0
IGFueSBzY2lzc29ycy4KKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKworICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgy
MDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKICAgICB9Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExh
eWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
T3BhcXVlQ29udGVudHNSZWdpb25Ob25FbXB0eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1
ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMTUwLCAx
NTAsIDEwMCwgMTAwKSk7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJl
bnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxzZSk7CisgICAg
ICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQo
KSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjUw
LCAyNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgbGF5ZXItPnNl
dE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKKworICAgICAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwgMTIwLCAx
ODAsIDE4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgxNTAsIDE1MCwgMTAwLCAxMDApKTsKKworICAgICAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI1MCwgMjUwLCA1
MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIH0KICAg
ICB9Ci19Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KTsKIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130855</attachid>
            <date>2012-03-08 11:09:43 -0800</date>
            <delta_ts>2012-03-09 10:14:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120308140941.patch</filename>
            <type>text/plain</type>
            <size>229643</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIzN2EzYzRjNjkxZThlNzBlYzg2OTRhNGQ2YzVkYjJhN2YyNWYxYTguLjIzNmQ5NzUzMmIyNTQ5
NWM0NzBhM2JkZTE2NDA1OTcwZmJmMjQ3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsODkgQEAKKzIwMTItMDMtMDggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3RzIGFuZCB0
ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hy
b21pdW06Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFRlc3RD
b250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RD
b250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250ZW50TGF5ZXJJbXBs
OjpUZXN0Q29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExh
eWVySW1wbDo6b3BhcXVlQ29udGVudHNSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENv
bnRlbnRMYXllckltcGw6OnNldE9wYXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6Om9jY2x1c2lv
bkluU2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U6Om9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3REYW1hZ2VDbGllbnQ6OmRhbWFnZVJlY3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0Ojp+Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3Q6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdDo6Y3JlYXRlRHJhd2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3Q6OmNyZWF0ZURyYXdpbmdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNhbGNEcmF3RXRjKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OnNldFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3Q6OmFkZENoaWxkKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNp
b25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpydW5N
eVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdvVGlt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0
VHdvVGltZXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3Vy
ZmFjZVJvdGF0ZWRPZmZBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1
c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJl
bjo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGlu
Z1N1cmZhY2VTaWJsaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3M6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNm
b3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBp
bmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQ6
OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3Nv
clJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5
ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQ6OnJ1bk15
VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92
ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXll
clNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRlc3Qp
OgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5
T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3Jl
ZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkOjpy
dW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJl
Y3RPdmVyTm90aGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhp
bmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJOb3RoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RE
YW1hZ2VSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZP
cmlnaW46OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVl
Q29udGVudHNSZWdpb25FbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5v
bkVtcHR5OjpydW5NeVRlc3QpOgorCiAyMDEyLTAzLTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIG9wYXF1ZSBwYWludHMgaW4g
Q0NPY2NsdXNpb25UcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBmYzhkMmU0NWVlM2IxMDc5MGU4
ZTJiOWViOGVkMDFkZmNhN2JjZTNhLi4zYTU5N2QwYjBjMjlmNWY0M2NkY2FiMTExZjg4ZmQ2Nzkw
MmNmOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKIAogI2luY2x1
ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTQ1LDg1ICs0
Nyw2OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3Mg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CitjbGFzcyBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6Ci0gICAgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKQot
ICAgICAgICA6IExheWVyQ2hyb21pdW0oKQotICAgIHsKLSAgICB9CisgICAgVGVzdENvbnRlbnRM
YXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgUmVnaW9u
IG9wYXF1ZUNvbnRlbnRzUmVnaW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50
U3BhY2VUcmFuc2Zvcm0pIGNvbnN0Ci0gICAgewotICAgICAgICBGbG9hdFJlY3QgdHJhbnNmb3Jt
ZWRSZWN0ID0gY29udGVudFNwYWNlVHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGludGVyc2Vj
dGlvbihtX29wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKSkpOwotICAgICAgICBy
ZXR1cm4gUmVnaW9uKGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm1lZFJlY3QpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJl
Y3QpIHsgbV9vcGFxdWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKyAgICB2aXJ0dWFs
IFJlZ2lvbiBvcGFxdWVDb250ZW50c1JlZ2lvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
Y29udGVudFNwYWNlVHJhbnNmb3JtKSBjb25zdCB7IHJldHVybiBlbmNsb3NlZEludFJlY3QoY29u
dGVudFNwYWNlVHJhbnNmb3JtLm1hcFJlY3QoRmxvYXRSZWN0KGludGVyc2VjdGlvbihtX29wYXF1
ZUNvbnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKSkpKTsgfQorICAgIHZvaWQgc2V0T3Bh
cXVlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29w
YXF1ZUNvbnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQogCiBwcml2YXRlOgotICAg
IEludFJlY3QgbV9vcGFxdWVQYWludFJlY3Q7CisgICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRz
UmVjdDsKIH07CiAKLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9t
aXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKLXsKLSAgICBsYXll
ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50KDAsIDApKTsKLSAgICBsYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotICAg
IGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKLX0KLQotdm9pZCBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KiBsYXllciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUsIGJvb2wgb3BhcXVlTGF5
ZXJzKQotewotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIsIHRyYW5zZm9y
bSwgcG9zaXRpb24sIGJvdW5kcyk7Ci0gICAgaWYgKG9wYXF1ZUxheWVycykKLSAgICAgICAgbGF5
ZXItPnNldE9wYXF1ZShvcGFxdWUpOwotICAgIGVsc2UgewotICAgICAgICBsYXllci0+c2V0T3Bh
cXVlKGZhbHNlKTsKLSAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAgICAgIGxheWVyLT5zZXRP
cGFxdWVQYWludFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAg
IH0KLX0KK3N0YXRpYyBpbnQgbmV4dENDTGF5ZXJJbXBsSWQgPSAwOworCitjbGFzcyBUZXN0Q29u
dGVudExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CitwdWJsaWM6CisgICAgVGVzdENv
bnRlbnRMYXllckltcGwoKSA6IENDTGF5ZXJJbXBsKG5leHRDQ0xheWVySW1wbElkKyspIHsgc2V0
RHJhd3NDb250ZW50KHRydWUpOyB9CisKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250ZW50
c1JlZ2lvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3Jt
KSBjb25zdCB7IHJldHVybiBlbmNsb3NlZEludFJlY3QoY29udGVudFNwYWNlVHJhbnNmb3JtLm1h
cFJlY3QoRmxvYXRSZWN0KGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRzUmVjdCwgdmlzaWJs
ZUxheWVyUmVjdCgpKSkpKTsgfQorICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNSZWN0KGNvbnN0
IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRzUmVjdCA9IG9w
YXF1ZUNvbnRlbnRzUmVjdDsgfQorcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVu
dHNSZWN0OworfTsKIAogLy8gQSBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHRvdGFsIGN1cnJlbnQg
b2NjbHVzaW9uLgotY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1YmxpYyBDQ09jY2x1
c2lvblRyYWNrZXIgewordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5k
ZXJTdXJmYWNlVHlwZT4KK2NsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlIDogcHVibGlj
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gewog
cHVibGljOgotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoSW50UmVjdCBzY3JlZW5TY2lzc29y
UmVjdCkKLSAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXIoc2NyZWVuU2Npc3NvclJlY3QpCisg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY3JlZW5TY2lzc29yUmVjdCkK
KyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+KHNjcmVlblNjaXNzb3JSZWN0KQogICAgICAgICAsIG1fb3ZlcnJpZGVMYXllclNjaXNz
b3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
KEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckRhbWFn
ZUNsaWVudCogZGFtYWdlQ2xpZW50KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihzY3Jl
ZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQorICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckRh
bWFnZUNsaWVudEJhc2U8UmVuZGVyU3VyZmFjZVR5cGU+KiBkYW1hZ2VDbGllbnQpCisgICAgICAg
IDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPihz
Y3JlZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQogICAgICAgICAsIG1fb3ZlcnJpZGVMYXll
clNjaXNzb3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpb24gb2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlcjo6bV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW47IH0KLSAgICBSZWdpb24gb2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyOjptX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25JblNjcmVlblNw
YWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW47IH0KKyAg
ICBSZWdpb24gb2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5UYXJnZXQ7IH0KIAotICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBDQ09jY2x1c2lvblRyYWNrZXI6Om1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gcmVnaW9uOyB9Ci0gICAgdm9pZCBzZXRPY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsgQ0NPY2NsdXNpb25U
cmFja2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lvbjsgfQorICAg
IHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQorICAgIHZvaWQgc2V0T2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVnaW9uOyB9CiAKICAgICB2b2lkIHNldExheWVyU2Npc3Nv
clJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA9
IHRydWU7IG1fbGF5ZXJTY2lzc29yUmVjdCA9IHJlY3Q7fQogICAgIHZvaWQgdXNlRGVmYXVsdExh
eWVyU2Npc3NvclJlY3QoKSB7IG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID0gZmFsc2U7IH0K
IAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5UYXJn
ZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJldHVybiBtX292
ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IENDT2NjbHVzaW9u
VHJhY2tlcjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7IH0KKyAgICB2
aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXll
clR5cGUqIGxheWVyKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA/
IG1fbGF5ZXJTY2lzc29yUmVjdCA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIp
OyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdDsKICAg
ICBJbnRSZWN0IG1fbGF5ZXJTY2lzc29yUmVjdDsKIH07CiAKLWNsYXNzIFRlc3REYW1hZ2VDbGll
bnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50IHsKK3RlbXBsYXRlPHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorY2xhc3MgVGVzdERhbWFnZUNsaWVudCA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJlbmRlclN1cmZhY2VUeXBlPiB7
CiBwdWJsaWM6CiAgICAgLy8gVGhlIGludGVyZmFjZQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRh
bWFnZVJlY3QoY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKikgY29uc3QgeyByZXR1cm4gbV9k
YW1hZ2VSZWN0OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgZGFtYWdlUmVjdChjb25zdCBSZW5k
ZXJTdXJmYWNlVHlwZSopIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlUmVjdDsgfQogCiAgICAgLy8g
VGVzdGluZyBzdHVmZgogICAgIFRlc3REYW1hZ2VDbGllbnQoY29uc3QgRmxvYXRSZWN0JiBkYW1h
Z2VSZWN0KSA6IG1fZGFtYWdlUmVjdChkYW1hZ2VSZWN0KSB7IH0KQEAgLTEzMywyMDgxICsxMTgs
MTY0OCBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7CiB9OwogCi0jZGVm
aW5lIFRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShGVUxMVEVTVE5BTUUsIFNIT1JUVEVT
VE5BTUUpIFwKLSAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlTGF5ZXIpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNIT1JUVEVTVE5B
TUUodHJ1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVQYWludFJlY3QpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgU0hPUlRURVNUTkFN
RShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5h
bWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lv
blRyYWNrZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkNDT2NjbHVzaW9uVHJhY2tlclRlc3QoKQorICAgIHsKKyAgICAgICAgbV9yb290Q2hyb21p
dW0uY2xlYXIoKTsKKyAgICAgICAgbV9yb290SW1wbC5jbGVhcigpOworICAgICAgICBtX3JlbmRl
clN1cmZhY2VMYXllckxpc3RDaHJvbWl1bS5jbGVhcigpOworICAgICAgICBtX3JlbmRlclN1cmZh
Y2VMYXllckxpc3RJbXBsLmNsZWFyKCk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIC8vIERv
IHRoaXMgYWZ0ZXIgZnJlZWluZyBldmVyeXRoaW5nLiBEb24ndCBsZWF2ZSB0aGUgUHJveHkgaW4g
YW4gdW5leHBlY3RlZCBzdGF0ZSBmb3Igb3RoZXIgdGVzdHMuCisgICAgICAgIENDUHJveHk6OnNl
dEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQoZmFsc2UpOworI2VuZGlmCiAgICAgfQogCi12b2lk
IGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8v
IFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJm
YWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwg
NzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1
bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3
MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHko
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwg
NzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwg
NzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAy
OSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEs
IDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEs
IDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbik7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8g
VGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgbGF5ZXJUcmFuc2Zv
cm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwot
ICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1h
eFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsK
LQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAz
MCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAzMSwgNzAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNz
b3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
MjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0g
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMjksIDcwLCA3
MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3
MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAz
MSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAs
IDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjksIDMxLCA3MCwgNzApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFV
RShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJv
dGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbik7Ci0KLXZvaWQg
bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24oYm9vbCBvcGFxdWVMYXll
cnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBi
ZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxh
eWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hp
bGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0g
ICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7Ci0KLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1
MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUw
LCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwg
NTEsIDUwLCA1MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVj
dCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1
MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUw
KSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDUxLCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTEsIDUw
LCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAxMDAsIDUwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUx
LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDUwLCA1MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5
LCA1MSwgNTAsIDUwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JS
ZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNDksIDEpLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNDksIDUwLCA1
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwg
NTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwg
MSwgNDkpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5U
RURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdp
b25XaXRoVHJhbnNsYXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0
aW9uKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFj
ZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0
IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVy
KTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQot
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCks
IHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3
MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCks
IEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5
LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7Ci0K
LSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAs
IDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwg
SW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2
MSwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgp
LCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwg
NjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwg
NjApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotCi0gICAgLyogSnVzdGlmaWNhdGlv
biBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Ci0gICAgICAgICAgICAgICAx
MDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCi0gICAg
ICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgICB8ICAxMCAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHwgICAgICAgICAgICAg
ICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIHwxMCstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAg
NDIwICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAg
ICAgICB8ICB8Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAg
IHwgIHwKLSAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwg
ICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAg
fAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAg
ICAgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0g
ICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAg
ICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAg
ICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAg
fCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8Ci0gICAgICAgICAgICstLXwtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICA0OTAgICAgICAgICAgICAgfAotICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCi0gICAgICovCi19
Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0
X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlLCBsYXllckFkZGVk
VG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKGJvb2wgb3BhcXVlTGF5ZXJz
KQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBj
aGlsZDIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQo
KSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxk
KGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hp
bGQoY2hpbGQyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwot
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zv
cm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxv
YXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAs
IDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyB8
Y2hpbGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2Ns
dXNpb25UcmFja2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMg
ZGlmZmVyZW50IGNvZGUgaW4KLSAgICAvLyBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZSwgYXMg
dGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbi4KLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg2MCwgMjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
Y2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNp
emUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50
LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIElu
dFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwg
NjAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJl
Y3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIC8vIFRoaXMgaXMg
dGhlIGxpdHRsZSBwaWVjZSBub3Qgb2NjbHVkZWQgYnkgY2hpbGQyCi0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCg5LCA0MzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICAvLyBUaGlzIGV4
dGVuZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgd2lsbCBiZSB0aGUgb3JpZ2lu
YWwgcmVjdC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAs
IDYwLCA4MCkpKTsKLSAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMg
b2YgY2hpbGQyLCBhbmQgc2hvdWxkIGluY2x1ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVh
Y2ggc2lkZS4KLSAgICAvLyBUaGlzIGFsc28gZGVtb25zdHJhdGVzIHRoYXQgdGhlIHJlY3QgY2Fu
IGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3QgZ2V0IGNsaXBwZWQgdG8gdGhlIGxheWVyJ3Mgdmlz
aWJsZUxheWVyUmVjdCgpLgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDIw
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJl
Y3QoLTEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBh
ZGphY2VudCBzaWRlcyBvZiBjaGlsZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1
ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4gVGhlIGxlZnQKLSAgICAvLyBhbmQgYm90dG9tIGVkZ2Vz
IGFyZSBjb21wbGV0ZWx5IHVub2NjbHVkZWQgZm9yIHNvbWUgcm93L2NvbHVtbiBzbyB3ZSBnZXQg
YmFjayB0aGUgb3JpZ2luYWwgcXVlcnkgcmVjdC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KC0xMCwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpLmlz
RW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwg
SW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwg
NDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKLSAgICAvLyB8Y2hp
bGQyfCBzaG91bGQgZ2V0IG1lcmdlZCB3aXRoIHRoZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5v
dwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCks
IGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBWZWN0b3I8SW50UmVjdD4gc2NyZWVuID0g
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpOwotICAgIFZlY3RvcjxJ
bnRSZWN0PiB0YXJnZXQgPSBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
OTAsIDMwLCAxMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA2MCwgMTApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MjksIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA2MCwgMTAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMzEsIDYwLCAxMCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3
MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDYw
LCAxMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEs
IDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjks
IDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwg
MzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA2MCwgMTAp
KS5pc0VtcHR5KCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYw
KSkpOwotICAgIC8vIFRoaXMgcmVjdCBpcyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCi0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzksIDEwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7
Ci0gICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCB0b3AvcmlnaHQgZW5kcyBvZiB8Y2hpbGQy
fC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwg
NzApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0IGVuZHMgb2Yg
fGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzksIDgwLCA2MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAz
OSwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJv
dmUgb2NjbHVzaW9uIGZyb20gfGxheWVyfDoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KLSAgICAgIHwgICAgMzAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAz
MCAgIDYwICAgICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKLSAgICAgIHwgMzAgKyAtLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAzMCArLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgICB8ICAxMCAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHxcXFxcXFxc
XFxcXFx8ICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIHwxMCstLS0tLS0tLS0tfC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tfFxcXFxcXFxcXFxc
XHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8ICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tKy8v
fCAgICAgNDIwICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAg
ICAgICAgICAgICB8ICB8Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAg
ICAgICAgIHwgIHwKLSAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8
ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwK
LSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAgICAg
ICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAg
ICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAg
fCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8Ci0gICAgICAgICAgICstLXwtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICA0OTAgICAgICAgICAgICAgfAotICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCi0gICAg
ICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFj
aywgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKTsK
LQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZh
Y2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0g
ICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsK
LQotICAgIC8vIE5vdyByb3RhdGUgdGhlIGNoaWxkIGEgbGl0dGxlIG1vcmUgc28gaXQgaXMgbm90
IGF4aXMtYWxpZ25lZC4gVGhlIHBhcmVudCB3aWxsIG5vIGxvbmdlciBiZSBvY2NsdWRlZCBieSB8
bGF5ZXJ8LCBidXQKLSAgICAvLyB0aGUgY2hpbGQncyBvY2NsdXNpb24gc2hvdWxkIGJlIHVuY2hh
bmdlZC4KLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90
YXRlKDk1KTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9y
bS50cmFuc2xhdGUoMTAsIDEwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCks
IGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5z
Zm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIEludFJlY3QgY2xp
cHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXItPnZpc2libGVM
YXllclJlY3QoKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgw
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoY2xpcHBlZExheWVySW5DaGlsZCwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hp
bGQpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVk
TGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRM
YXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDEs
IDApOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXll
ckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0x
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlw
cGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkp
OwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKLSAgICBjbGlwcGVkTGF5ZXJJ
bkNoaWxkLm1vdmUoMCwgMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5D
aGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwot
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKLSAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBjaGls
ZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwg
NTUsIDEsIDEpKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwgNTUsIDEsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwg
NTUsIDEsIDEpKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1
c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZB
eGlzU3VyZmFjZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNT
dXJmYWNlKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9w
YXF1ZUxheWVycyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIGlzIHNpbWlsYXIg
dG8gdGhlIHByZXZpb3VzIHRlc3QgYnV0IG5vdyB3ZSBtYWtlIGEgZmV3IG9wYXF1ZSBsYXllcnMg
aW5zaWRlIG9mIHxjaGlsZHwgc28gdGhhdCB0aGUgb2NjbHVkZWQgcGFydHMgb2YgY2hpbGQgYXJl
IG5vdCBhIHNpbXBsZSByZWN0LgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50
aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBj
aGlsZC0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxk
VHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAg
Y2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUo
LTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRy
YW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA0NDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSwgb3Bh
cXVlTGF5ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJl
Y3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwg
NzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwg
SW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3
MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5
LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVj
dCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMw
LCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIElu
dFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAs
IDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgp
LCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0
UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkp
KTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8
bGF5ZXIxfCBhbmQgfGxheWVyMnw6Ci0KLSAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXll
cjF8OiAvLy8vLwotICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVn
aW9uIG9mIHxsYXllcjJ8OiBcXFxcXAotICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi0gICAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAg
ICAgICAgIHwKLSAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAg
fAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98ICAgICA0MjAgICAgICB8ICB8Ci0gICAg
ICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3w2MCAgICAgICAgICAgIHwgIHwKLSAgICAgICB8ICB8
ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAgICstLXwtLXwtLS0t
LS0tLS0tLS18LS0rICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgIDIwfDEwfCAgICAgNzAgICAg
IHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwg
IHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAg
ICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAg
fCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwxMHwKLSAgICAgICAgICB8ICArLS0t
LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tKwotICAgICAgICAgIHwgICAgICAgICAgICAg
ICB8IDQ5MCAgICAgICAgICAgICB8Ci0gICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICA2MCAgICAgICAgICAgICAgIDQ0MAotICAgICAq
LwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycywg
bGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMpOwotCi12
b2lkIHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMoYm9vbCBv
cGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zv
cm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50
aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMik7
Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChsYXllcjEpOwotICAgIGNoaWxkMi0+YWRkQ2hpbGQobGF5
ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90
YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hpbGQxLT5zZXRN
YXNrc1RvQm91bmRzKHRydWUpOwotICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsK
LQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsK
LSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
YXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1t
eUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7Ci0K
LSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdl
dCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDQwLCA4MCwgNjApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDIwLCA2MCwgODApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoMCwg
NDIwLCA2MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIuZ2V0KCksIEludFJlY3QoLTEsIDQyMCwgNjAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQxOSwgNjAsIDgwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRS
ZWN0KDAsIDQyMCwgNjEsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQyMCwgNjAsIDgxKSkpOwotCi0gICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0gICAgb2NjbHVzaW9u
LmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIuZ2V0KCksIGNoaWxkMi0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcjEuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMS5nZXQoKSwgSW50UmVjdCgwLCA0MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMSwgNDMwLCA3MCwgNzAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIElu
dFJlY3QoMCwgNDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MSwgNzApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3
MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQx
LmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxk
MS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsK
LQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwg
NzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDIwLCA0MCwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDE5LCA0MCwgODAsIDYwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAz
OSwgODAsIDYwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1
c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8ICAgIDMwICAgICAgICAgICAg
ICAgfCAgICAgICBjaGlsZDEKLSAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi0gIDEwMCB8ICA0MHwgICAgICAgICAgICAgICAgfCAgICAgY2hpbGQyICAgICAg
fAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKLSAgICAg
IHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAgICB8ICB8IHwg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAotICAgICAgfCAgfCB8ICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCA1MDAKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAot
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tfC0rCi0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAg
ICAgICAgICAgICAgICAgICAgICAgIDUwMAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRf
UEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uV2l0
aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzLCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBw
aW5nU2libGluZ1N1cmZhY2VzKTsKLQotdm9pZCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0
IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQo
Y2hpbGQyKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVyMSk7Ci0gICAgY2hpbGQyLT5hZGRD
aGlsZChsYXllcjIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07
Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBjaGlsZFRyYW5z
Zm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUw
KTsKLQotICAgIC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRz
IGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhj
aGlsZDEuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
MTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhj
aGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUo
MTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3Vy
ZmFjZXMKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRp
b25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgY2hpbGQxLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOwotICAgIGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIGNo
aWxkMS0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgY2hpbGQyLT5zZXRNYXNrc1RvQm91
bmRzKGZhbHNlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1t
eUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
LSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAw
LCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxk
Mi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQo
KSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3Qo
LTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3
MCwgODEpKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTksIDcw
LCA4MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgp
LCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEw
MDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0
KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdl
dCgpLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJ
bnRSZWN0KC0xMSwgNDMwLCA4MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MjksIDgwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAs
IDQzMCwgODEsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwg
ODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDIwLCA3MCwgODApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjks
IDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDE5LCA3MCwgODApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDE5LCAzMCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAyOSwgODAsIDcwKSkpOwotCi0gICAgLyogSnVz
dGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAot
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHwgICAgMjAgICAgICAgICAgICAg
ICB8ICAgICAgIGxheWVyMQotICAgICAgfCAgMzArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLSAgMTAwIHwgIDMwfCAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgICAgICB8
Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAotICAgICAg
fCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAgIHwgIHwgfCAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAgICB8ICB8IHwgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgIHwgfAotICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsg
ICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8IDUxMAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0g
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS18LSsKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAotICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgNTEwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25JblNj
cmVlblNwYWNlLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk7Ci0KLXZvaWQgc3VyZmFj
ZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFuc2Zvcm1zKGJvb2wgb3BhcXVlTGF5
ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUg
YmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKGNoaWxkMSk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOwotICAgIGNo
aWxkMS0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBjaGlsZDItPmFkZENoaWxkKGxheWVyMik7Ci0K
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDFUcmFuc2Zvcm07Ci0gICAgY2hpbGQxVHJh
bnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgt
OTApOwotICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDJUcmFuc2Zvcm07Ci0gICAgY2hpbGQyVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0g
ICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIC8vIFRoZSBv
d25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2Vz
IHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxk
MVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUoNTEwLCA1MjApLCB0cnVlLCBvcGFxdWVMYXll
cnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGls
ZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKLQotICAgIC8vIE1ha2UgdGhlbSBib3RoIHJlbmRlciBzdXJmYWNlcwotICAgIEZpbHRl
ck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3Bl
cmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBjaGlsZDEtPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0g
ICAgY2hpbGQyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgY2hpbGQxLT5zZXRNYXNrc1Rv
Qm91bmRzKGZhbHNlKTsKLSAgICBjaGlsZDItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJm
YWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTMwLCAtMzAsIDEwMDAsIDEwMDApKTsKLQotICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIuZ2V0KCkp
OwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwg
NDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIuZ2V0KCksIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJ
bnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKLQotICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOwotICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGlsZDIt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
NDIwLCAtMjAsIDgwLCA5MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQxOSwg
LTIwLCA4MCwgOTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMjEsIDgwLCA5MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0xOSwgODAsIDkw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJ
bnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
IG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEw
LCAyMCwgOTAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDE5LCA5MCwgODApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMTEsIDIwLCA5MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7Ci0KLSAgICAvKiBKdXN0
aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgotICAgICAgICAgICAgICAgMTAwCi0g
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfDIwICAgICAgICAgICAgICAgICAg
IHwgICAgICAgbGF5ZXIxCi0gICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi0gIDEwMCB8fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8Ci0gICAgICB8
MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHx8IHwgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgfHwgfCAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgfCB8Ci0gICAgICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICB8IHwKLSAgICAgICt8LXwtLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgIHwgfAot
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUxMAotICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTAgfCB8Ci0gICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwK
LSAgICAgICB8IHwgICAgICAgICAgICAgICAgNTIwICAgICAgICAgICAgIHwgfAotICAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8Ci0gICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAotICAgICAqLwot
fQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9zdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMsIHN1cmZh
Y2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyk7Ci0KLXZvaWQgb2Nj
bHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAv
LyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gYmx1ckxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3BhY2l0eUxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gb3BhcXVlTGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChi
bHVyTGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQob3BhY2l0eUxheWVyKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKG9wYXF1ZUxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxh
eWVyVHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0g
ICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xh
dGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAx
MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGJsdXJMYXllci5nZXQoKSwg
bGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFx
dWVMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6
ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhvcGFjaXR5TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworcHJvdGVj
dGVkOgorICAgIFBhc3NPd25QdHI8Q29udGVudExheWVyVHlwZT4gY3JlYXRlUm9vdChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKKyAgICB7CisgICAgICAgIE93
blB0cjxDb250ZW50TGF5ZXJUeXBlPiBsYXllciA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJU
eXBlKCkpOworCisgICAgICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAg
ICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwor
ICAgICAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAg
IGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIGxheWVyLT5zZXRCb3VuZHMo
Ym91bmRzKTsKKyAgICAgICAgc2V0UHJvcGVydGllcyhsYXllci5nZXQoKSk7CisKKyAgICAgICAg
aWYgKG9wYXF1ZUxheWVycykKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNlKTsKKyAg
ICAgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNv
bnRlbnRzUmVjdChJbnRSZWN0KEludFBvaW50KCksIGJvdW5kcykpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgfQog
CisgICAgTGF5ZXJUeXBlKiBjcmVhdGVMYXllcihMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMTAsIFdlYkNvcmU6OlBlcmNlbnQpLCBGaWx0ZXJPcGVy
YXRpb246OkJMVVIpKTsKLSAgICAgICAgYmx1ckxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgICAgICBPd25QdHI8TGF5ZXJUeXBlPiBsYXllciA9IGNyZWF0ZShwYXJlbnQpOworCisgICAg
ICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgbGF5ZXItPnNldFN1
YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBsYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIGxheWVyLT5zZXRQb3Np
dGlvbihwb3NpdGlvbik7CisgICAgICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKKyAgICAg
ICAgc2V0UHJvcGVydGllcyhsYXllci5nZXQoKSk7CisKKyAgICAgICAgTGF5ZXJUeXBlKiBsYXll
clB0ciA9IGxheWVyLmdldCgpOworICAgICAgICBhZGRDaGlsZChwYXJlbnQsIGxheWVyLnJlbGVh
c2UoKSk7CisgICAgICAgIHJldHVybiBsYXllclB0cjsKICAgICB9CiAKKyAgICBMYXllclR5cGUq
IGNyZWF0ZVN1cmZhY2UoTGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMpCiAgICAgeworICAgICAgICBMYXllclR5cGUqIGxheWVyID0gY3JlYXRlTGF5ZXIo
cGFyZW50LCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwogICAgICAgICBGaWx0ZXJPcGVy
YXRpb25zIGZpbHRlcnM7CiAgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVy
YXRpb246OkdSQVlTQ0FMRSkpOwotICAgICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKKyAgICAgICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIHJldHVy
biBsYXllcjsKICAgICB9CiAKKyAgICBDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nTGF5
ZXIoTGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJv
b2wgb3BhcXVlKQogICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IGxheWVy
ID0gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllclR5cGUoKSk7CisKKyAgICAgICAgbGF5ZXItPnNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgICAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGxheWVyLT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9u
KTsKKyAgICAgICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOworICAgICAgICBzZXRQcm9wZXJ0
aWVzKGxheWVyLmdldCgpKTsKKworICAgICAgICBpZiAob3BhcXVlTGF5ZXJzKQorICAgICAgICAg
ICAgbGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IGxheWVyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgICAgICAgICAgaWYgKG9wYXF1ZSkKKyAgICAg
ICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgYm91bmRzKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGF5ZXItPnNl
dE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KCkpOworICAgICAgICB9CisKKyAgICAgICAgQ29u
dGVudExheWVyVHlwZSogbGF5ZXJQdHIgPSBsYXllci5nZXQoKTsKKyAgICAgICAgYWRkQ2hpbGQo
cGFyZW50LCBsYXllci5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gbGF5ZXJQdHI7CisgICAg
fQorCisgICAgQ29udGVudExheWVyVHlwZSogY3JlYXRlRHJhd2luZ1N1cmZhY2UoTGF5ZXJUeXBl
KiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQor
ICAgIHsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSBjcmVhdGVEcmF3aW5nTGF5
ZXIocGFyZW50LCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMsIG9wYXF1ZSk7CiAgICAgICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOwotICAgICAgICBvcGFjaXR5TGF5ZXItPnNldEZp
bHRlcnMoZmlsdGVycyk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVy
YXRpb246OkdSQVlTQ0FMRSkpOworICAgICAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
KyAgICAgICAgcmV0dXJuIGxheWVyOwogICAgIH0KIAogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVT
aXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1
cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgLy8gT3BhY2l0eSBsYXllciB3b24ndCBj
b250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci5nZXQoKSwgb3BhY2l0eUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0gICAgLy8gQW5kIGhh
cyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJmYWNlLgotICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0Vt
cHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5pc0VtcHR5KCkpOwotCi0gICAgLy8gT3BhcXVlIGxheWVyIHdpbGwgY29udHJpYnV0ZSB0
byBvY2NsdXNpb24uCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFx
dWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIob3BhcXVlTGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdl
dFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIuZ2V0KCksIG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFyZW50IHN1cmZhY2UuCi0gICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAv
LyBUaGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBv
dXRzaWRlIGl0cyBzdWJ0cmVlLgotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UoYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgIC8v
IEFuZCBpdCB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoYmx1ckxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci5nZXQoKSwgYmx1ckxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgIC8vIEJ1dCB0aGUgb3BhcXVlIGxh
eWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgotICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotfQotCi1URVNUX09QQVFV
RV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9vY2NsdXNpb25JbnRl
cmFjdGlvbldpdGhGaWx0ZXJzLCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzKTsKLQot
dm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9w
dFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVy
KTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1
cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRS
ZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBh
cmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5k
cygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAg
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRl
eHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24udXNl
RGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7
Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRM
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlLCBsYXllclNjaXNzb3JSZWN0
T3ZlclRpbGUpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVM
YXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFy
ZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBs
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENo
aWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICBUZXN0
Q29udGVudExheWVySW1wbCogY2FsY0RyYXdFdGMoVGVzdENvbnRlbnRMYXllckltcGwqIHJvb3Qs
IFBhc3NPd25QdHI8Q0NMYXllckltcGw+IHBhc3NSb290KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHJvb3QgPT0gcGFzc1Jvb3QuZ2V0KCkpOworICAgICAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBk
dW1teUxheWVyTGlzdDsKKyAgICAgICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisK
KyAgICAgICAgQVNTRVJUKCFyb290LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICByb290LT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOwor
ICAgICAgICByb290LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJvb3Qt
PmJvdW5kcygpKSk7CisgICAgICAgIG1fcm9vdEltcGwgPSBwYXNzUm9vdDsKKyAgICAgICAgbV9y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbC5hcHBlbmQobV9yb290SW1wbC5nZXQoKSk7CisKKyAg
ICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocm9vdCwgcm9vdCwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3Jl
bmRlclN1cmZhY2VMYXllckxpc3RJbXBsLCBkdW1teUxheWVyTGlzdCwgMCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7CisgICAgICAgIHJldHVybiByb290OworICAgIH0KIAotICAgIEZpbHRlck9wZXJh
dGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21w
b25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9u
OjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBUZXN0Q29udGVudExheWVyQ2hyb21p
dW0qIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSogcm9vdCwgUGFzc093blB0
cjxMYXllckNocm9taXVtPiBwYXNzUm9vdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChyb290ID09
IHBhc3NSb290LmdldCgpKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IGR1bW15TGF5ZXJMaXN0OworICAgICAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
KworICAgICAgICBBU1NFUlQoIXJvb3QtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIHJvb3Qt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7
CisgICAgICAgIHJvb3QtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9v
dC0+Ym91bmRzKCkpKTsKKyAgICAgICAgbV9yb290Q2hyb21pdW0gPSBhZG9wdFJlZihwYXNzUm9v
dC5sZWFrUHRyKCkpOworICAgICAgICBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bS5h
cHBlbmQobV9yb290Q2hyb21pdW0pOworCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJvb3QsIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21pdW0s
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgcmV0dXJuIHJv
b3Q7CisgICAgfQogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwg
b3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgdmlydHVhbCB2b2lkIHJ1bk15VGVzdCgpID0gMDsK
IAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsK
LSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7Citwcml2YXRlOgorICAgIHZvaWQgc2V0UHJvcGVydGllcyhMYXllckNocm9taXVtKiBs
YXllcikKKyAgICB7CisgICAgfQogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgIHZvaWQgc2V0UHJvcGVy
dGllcyhDQ0xheWVySW1wbCogbGF5ZXIpCisgICAgeworICAgICAgICBsYXllci0+c2V0Q29udGVu
dEJvdW5kcyhsYXllci0+Ym91bmRzKCkpOworICAgIH0KIAotICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgUGFzc093
blB0cjxMYXllckNocm9taXVtPiBjcmVhdGUoTGF5ZXJDaHJvbWl1bSogcGFyZW50KQorICAgIHsK
KyAgICAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihsYXllci5yZWxlYXNlKCkubGVha1JlZigp
KTsKKyAgICB9CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNyZWF0ZShD
Q0xheWVySW1wbCogcGFyZW50KQorICAgIHsKKyAgICAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBs
YXllciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUobmV4dENDTGF5ZXJJbXBsSWQrKyk7CisgICAgICAg
IHJldHVybiBsYXllci5yZWxlYXNlKCk7CisgICAgfQogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAs
IDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgdm9pZCBhZGRDaGlsZChDQ0xheWVySW1wbCogcGFyZW50LCBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZCkKKyAgICB7CisgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQp
OworICAgIH0KIAotICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNl
IGJvdW5kcy4KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgIHZvaWQgYWRkQ2hpbGQoTGF5ZXJD
aHJvbWl1bSogcGFyZW50LCBQYXNzT3duUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkKQorICAgIHsK
KyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChhZG9wdFJlZihjaGlsZC5sZWFrUHRyKCkpKTsKKyAg
ICB9CiAKLSAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNjaXNzb3JzLgotICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSkpOwotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgp
OworICAgIC8vIFRoZXNlIGhvbGQgb3duZXJzaGlwIG9mIHRoZSBsYXllcnMgZm9yIHRoZSBkdXJh
dGlvbiBvZiB0aGUgdGVzdC4KKyAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290Q2hyb21p
dW07CisgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBtX3Jvb3RJbXBsOworICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1bTsKKyAg
ICBWZWN0b3I8Q0NMYXllckltcGwqPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBsOworfTsK
IAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0g
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworI2RlZmluZSBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFR
VUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIGNsYXNzIENsYXNzTmFtZSMjTWFpblRocmVhZE9w
YXF1ZUxheWVycyA6IHB1YmxpYyBDbGFzc05hbWU8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFj
ZUNocm9taXVtLCBUZXN0Q29udGVudExheWVyQ2hyb21pdW0sIHRydWU+IHsgfTsgXAorICAgIFRF
U1RfRihDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVMYXllcnMsIHJ1blRlc3QpIHsgcnVuTXlU
ZXN0KCk7IH0KKyNkZWZpbmUgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX1BBSU5UUyhDbGFz
c05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVQYWludHMgOiBw
dWJsaWMgQ2xhc3NOYW1lPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgVGVz
dENvbnRlbnRMYXllckNocm9taXVtLCBmYWxzZT4geyB9OyBcCisgICAgVEVTVF9GKENsYXNzTmFt
ZSMjTWFpblRocmVhZE9wYXF1ZVBhaW50cywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQorCisj
ZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlNfUkVMRUFTRShDbGFzc05h
bWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJs
aWMgQ2xhc3NOYW1lPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIFRlc3RDb250ZW50TGF5
ZXJJbXBsLCB0cnVlPiB7IH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3Bh
cXVlTGF5ZXJzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisjZGVmaW5lIFJVTl9URVNUX0lN
UExfVEhSRUFEX09QQVFVRV9QQUlOVFNfUkVMRUFTRShDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBD
bGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVQYWludHMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDTGF5
ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2UsIFRlc3RDb250ZW50TGF5ZXJJbXBsLCBmYWxzZT4geyB9
OyBcCisgICAgVEVTVF9GKENsYXNzTmFtZSMjSW1wbFRocmVhZE9wYXF1ZVBhaW50cywgcnVuVGVz
dCkgeyBydW5NeVRlc3QoKTsgfQorI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVf
TEFZRVJTX0RFQlVHKENsYXNzTmFtZSkgXAorICAgIGNsYXNzIENsYXNzTmFtZSMjSW1wbFRocmVh
ZE9wYXF1ZUxheWVycyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZSwgVGVzdENvbnRlbnRMYXllckltcGwsIHRydWU+IHsgfTsgXAorICAgIFRFU1RfRihDbGFz
c05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMsIHJ1blRlc3QpIFwKKyAgICB7IFwKKyAgICAg
ICAgQ0NQcm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVhZCh0cnVlKTsgXAorICAgICAg
ICBydW5NeVRlc3QoKTsgXAorICAgIH0KKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BB
UVVFX1BBSU5UU19ERUJVRyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxU
aHJlYWRPcGFxdWVQYWludHMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDTGF5ZXJJbXBsLCBDQ1JlbmRl
clN1cmZhY2UsIFRlc3RDb250ZW50TGF5ZXJJbXBsLCBmYWxzZT4geyB9OyBcCisgICAgVEVTVF9G
KENsYXNzTmFtZSMjSW1wbFRocmVhZE9wYXF1ZVBhaW50cywgcnVuVGVzdCkgXAorICAgIHsgXAor
ICAgICAgICBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKHRydWUpOyBcCisg
ICAgICAgIHJ1bk15VGVzdCgpOyBcCisgICAgfQogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyNpZm5k
ZWYgTkRFQlVHCisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlMgUlVO
X1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSU19ERUJVRworI2RlZmluZSBSVU5fVEVTVF9J
TVBMX1RIUkVBRF9PUEFRVUVfUEFJTlRTIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9QQUlO
VFNfREVCVUcKKyNlbHNlCisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlF
UlMgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSU19SRUxFQVNFCisjZGVmaW5lIFJV
Tl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9QQUlOVFMgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BB
UVVFX1BBSU5UU19SRUxFQVNFCisjZW5kaWYKKworI2RlZmluZSBBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX0xB
WUVSUyhDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfUEFJTlRT
KENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xh
c3NOYW1lKSBcCisgICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX1BBSU5UUyhDbGFzc05h
bWUpCisKKyNkZWZpbmUgTUFJTl9BTkRfSU1QTF9USFJFQURfVEVTVChDbGFzc05hbWUpIFwKKyAg
ICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIFJV
Tl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBD
b250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCks
IHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0
KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93
blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci19CisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcw
LCA3MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAyOSwgNzAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMjksIDcwLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAyOSwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMw
LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwg
MzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMw
LCAzMSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwg
NzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MjksIDMxLCA3MCwgNzApKSk7CisgICAgfQorfTsKIAotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwg
c2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtcyk7CiAKLXZvaWQgbGF5ZXJT
Y2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0g
ICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUs
IHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBi
b29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hp
bGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
YXllclRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUw
KTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgbGF5ZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3du
UGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJU
eXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUq
IGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBj
YWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsK
LSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAg
aW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDMxLCA3MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXll
clNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwg
MjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMxLCA3MCwgNzAp
KSk7CisgICAgfQorfTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CitBTExf
Q0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGls
ZCk7CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9w
YXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQg
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CiAK
LSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpOworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFy
ZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBl
KiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxh
eWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZs
b2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBjYWxj
RHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg0OSwgNTAs
IDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTEs
IDUwLCA1MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJl
Y3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDUxLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNTAsIDQ5LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAwLCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkpOworICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKKworICAg
ICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
NTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg0OSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MSwgNDksIDQ5LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAs
IDUwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCAxLCA0OSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAg
ICB9Cit9OwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZCk7CiAKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3Vy
ZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3RhdGVkQ2hpbGQgOiBwdWJsaWMg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250
ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15
VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9y
bTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAg
Y2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKC0yNTAsIC0yNTApOwogCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXll
clR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAgQ29u
dGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBMYXllclR5
cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxv
YXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRN
YXNrc1RvQm91bmRzKHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBjYWxjRHJh
d0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKS5pc0VtcHR5KCkpOwotfQorICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUs
IGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CiAKLXZvaWQgc2NyZWVuU2Np
c3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQs
IEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYxLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2
MCwgNzEpKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0
KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVj
dCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzAsIDYxLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAs
IDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAs
IDYwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMwLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MzEsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisKKyAgICAg
ICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6
CisgICAgICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUg
cmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCisgICAgICAgICAgfCAgICAzMCAgICAgICAgICAgICAg
IHwgICAgICAgICAgIHJvdGF0ZSg5MCkgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgfCAzMCArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCisgICAgICAxMDAgfCAgICB8ICAxMCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHwgICAgICAgICAgICAgICB8MTAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgfCAgICB8MTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rICB8CisgICAgICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICA0MjAgICAg
ICB8ICB8CisgICAgICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgKy0tLS18LS18LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICstLXwtLXwtLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfDUwMCAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8MTB8CisgICAgICAgICAgICAgICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgfCAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS18LS0rCisgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAgICAg
ICB8CisgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMAorICAgICAgICAgKi8KKyAgICB9
Cit9OwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0
aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxM
X0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90
YXRlZENoaWxkKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Us
IG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBv
cGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29U
aW1lcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgT3duUHRyPENvbnRlbnRM
YXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBMYXll
clR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgICAgIGNoaWxkLT5z
ZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICAvLyB8
Y2hpbGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2Ns
dXNpb25UcmFja2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMg
ZGlmZmVyZW50IGNvZGUgaW4KKyAgICAgICAgLy8gbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Us
IGFzIHRoZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCisgICAgICAgIENv
bnRlbnRMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNjAsIDIw
KSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2Uo
KSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAg
ICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAw
LCAxMDAwKSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKIAot
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAs
IDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwg
NjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVm
YXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3Qo
MTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwor
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAx
MDAwLCAxMDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwor
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBsaXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVkIGJ5IGNoaWxk
MgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgMTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkp
OworICAgICAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28g
aXQgd2lsbCBiZSB0aGUgb3JpZ2luYWwgcmVjdC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg5LCA0MzAsIDYwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoOSwgNDMwLCA2MCwgODApKSk7CisgICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBw
YXN0IHR3byBhZGphY2VudCBzaWRlcyBvZiBjaGlsZDIsIGFuZCBzaG91bGQgaW5jbHVkZWQgdGhl
IHVub2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLgorICAgICAgICAvLyBUaGlzIGFsc28gZGVt
b25zdHJhdGVzIHRoYXQgdGhlIHJlY3QgY2FuIGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3QgZ2V0
IGNsaXBwZWQgdG8gdGhlIGxheWVyJ3MgdmlzaWJsZUxheWVyUmVjdCgpLgorICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCAyMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAg
IC8vIFRoaXMgZXh0ZW5kcyBwYXN0IHRocmVlIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgc28g
aXQgc2hvdWxkIGNvbnRhaW4gdGhlIHVub2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLiBUaGUg
bGVmdAorICAgICAgICAvLyBhbmQgYm90dG9tIGVkZ2VzIGFyZSBjb21wbGV0ZWx5IHVub2NjbHVk
ZWQgZm9yIHNvbWUgcm93L2NvbHVtbiBzbyB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgcXVlcnkg
cmVjdC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwg
NjAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAx
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5
LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAs
IDQzMSwgNjAsIDcwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lz
c29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIElu
dFJlY3QoOSwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAs
IDgwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgx
MCwgNDI5LCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkp
LmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
KTsKKyAgICAgICAgLy8gfGNoaWxkMnwgc2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFj
ZSB3ZSBhcmUgbGVhdmluZyBub3cKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDkwLCAzMCwgMTAsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA2
MCwgMTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDYw
LCAxMCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3
MCwgNjApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA2MCwgMTApKS5pc0VtcHR5KCkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgMTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDYwLCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAs
IDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgLy8gVGhpcyByZWN0IGlzIG1vc3Rs
eSBvY2NsdWRlZCBieSB8Y2hpbGQyfC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5
MCwgMzksIDEwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBh
c3QgdG9wL3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDI5LCA3MCwgMTEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgLy8gVGhpcyByZWN0IGV4
dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwuCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAsIDM5LCA4MCwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisKKyAgICAgICAg
LyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Cisg
ICAgICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVn
aW9uIG9mIHxsYXllcnw6IC8vLy8vCisgICAgICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwg
ICAgICAgICAgIHJvdGF0ZSg5MCkgICAgICAgICAgICAgICAgIHwgICAgIDMwICAgNjAgICAgICAg
ICB8ICAgIHxjaGlsZDJ8OiBcXFxcXAorICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAzMCArLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICB8ICB8
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8XFxcXFxcXFxcXFxc
fCAgfDEwICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS18LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8ICArLS18XFxcXFxcXFxcXFxc
fC0tLS0tLS0tLS0tLS0tLS0tKyAgfAorICAgICAgICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0t
Ky8vfCAgICAgNDIwICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8v
Ly8vfDYwICAgICAgICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8v
Ly8vfCAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tfC0tKworICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICA0OTAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKKyAg
ICAgICAgICovCisgICAgfQorfTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lcyk7CiAK
LSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCkpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJT
dXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+
CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwg
Q29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFu
c2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAg
ICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5NSk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7CisK
KyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0
ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFy
ZW50LmdldCgpOworICAgICAgICBMYXllclR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIo
cGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgICAgICBD
b250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwg
bGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
KTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKwor
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwor
CisgICAgICAgIEludFJlY3QgY2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1h
cFJlY3QobGF5ZXItPnZpc2libGVMYXllclJlY3QoKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChjbGlw
cGVkTGF5ZXJJbkNoaWxkLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5
ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUo
LTEsIDApOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBj
bGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgp
KTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDEsIDApOworICAgICAgICBjbGlw
cGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5
ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUo
LTEsIDApOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNo
aWxkKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xp
cHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIDEpOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxk
Lm1vdmUoMCwgMSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0Vt
cHR5KCkpOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOworCisgICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7CisgICAgICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDc1LCA1NSwgMSwgMSkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwg
NTUsIDEsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCg3NSwgNTUsIDEsIDEpKSk7CisgICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CitBTExfQ0NPQ0NMVVNJT05U
UkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VSb3RhdGVkT2ZmQXhpcyk7
CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBl
LCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNl
V2l0aFR3b09wYXF1ZUNoaWxkcmVuIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7
CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAg
ICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCks
IHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0
KCk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQs
IGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsK
KyAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgICAgIENvbnRlbnRM
YXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllcjIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCA0NTAp
LCBJbnRTaXplKDUwMCwgNjApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBv
d25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMw
LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMx
LCA2MCwgNzApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcw
KSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7
CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgMzksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgICAgIC8qIEp1c3RpZmlj
YXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6
CisKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8vLy8vCisg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxs
YXllcjJ8OiBcXFxcXAorICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAg
ICAgICAgfAorICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
KyAgfAorICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAgICAgfCAg
fAorICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfDYwICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAorICAg
ICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAg
ICAgICAgMjB8MTB8ICAgICA3MCAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICAgICB8ICArLS0tLS0tLS0t
LS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tKworICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
fCA0OTAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAgICA0NDAK
KyAgICAgICAgICovCisgICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0NDT0ND
TFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09w
YXF1ZUNoaWxkcmVuKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExh
eWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3MgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisg
ICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVS
b290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVu
dC5nZXQoKTsKKyAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVhdGVTdXJmYWNl
KHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwg
MTApKTsKKyAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBh
cmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTAp
KTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIxID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z0xheWVyKGNoaWxkMSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTAp
LCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxh
eWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAg
ICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOworCisg
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIyKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0x
MCwgNDE5LCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEw
LCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3Qo
LTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOworICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMik7CisgICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLCBjaGlsZDIt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxKTsKKworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMw
LCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQxLCBJbnRSZWN0KC0xMSwgNDMwLCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDI5LCA4MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0x
MCwgNDMwLCA4MSwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzEpKSk7CisKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMSk7CisgICAgICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwg
MjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAy
MCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSkpOworCisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDIwLCA3MCwg
ODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDI5LCAyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMTksIDcwLCA4MCkpKTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAzMCwgODAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgxOSwgMzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAsIDI5LCA4MCwgNzApKSk7CisKKyAgICAgICAg
LyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAgICAgICAgICAgICAg
ICAgICAxMDAKKyAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwg
ICAgMjAgICAgICAgICAgICAgICB8ICAgICAgIGxheWVyMQorICAgICAgICAgIHwgIDMwKyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAxMDAgfCAgMzB8ICAgICAgICAg
ICAgICAgIHwgICAgIGxheWVyMiAgICAgIHwKKyAgICAgICAgICB8MjArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAgICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICB8IHwKKyAgICAgICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgIHwgfAorICAgICAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwgNTEwCisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAor
ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LSsKKyAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEw
CisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0NDT0NDTFVTSU9OVFJB
Q0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5n
cyk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci19Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBl
bmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1z
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAg
dm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hp
bGQxVHJhbnNmb3JtOworICAgICAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUw
KTsKKyAgICAgICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgtOTApOworICAgICAgICBjaGlsZDFU
cmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNoaWxkMlRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkMlRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAg
ICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIE93blB0
cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAg
ICAgICAgTGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBhcmVudCwgY2hp
bGQxVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAyMCksIEludFNpemUoMTAsIDEwKSk7CisgICAg
ICAgIExheWVyVHlwZSogY2hpbGQyID0gdGhpcy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxk
MlRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEwLCAxMCkpOworICAgICAg
ICBDb250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hp
bGQxLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUo
NTEwLCA1MTApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNE
cmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOworCisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJl
Y3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MTksIDcw
LCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIs
IEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKKworICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKKyAgICAgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi1URVNUX09QQVFV
RV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29y
UmVjdE92ZXJDdWxsZWRUaWxlLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAs
IC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMSwgSW50UmVjdCg0MTksIC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAsIC0yMSwgODAsIDkwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVj
dCg0MjAsIC0xOSwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOwogCi12b2lkIGxheWVy
U2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5j
cmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZp
bHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJl
U2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJl
bnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAx
MDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAs
IDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzLCBsYXllclNjaXNzb3JS
ZWN0T3ZlclBhcnRpYWxUaWxlcyk7Ci0KLXZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlh
bFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5v
cGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7
Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXll
cnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3Bh
cXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1t
eUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsK
LQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAw
LCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwg
MTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JSZWN0
T3ZlclBhcnRpYWxUaWxlcywgc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKTsKLQot
dm9pZCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBh
ZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJl
bnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExh
eWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlv
bnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBs
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRl
eHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJv
dW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQot
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRp
dHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1h
eFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAw
KSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0
eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKS5pc0VtcHR5KCkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMsIGxheWVyU2Np
c3NvclJlY3RPdmVyTm9UaWxlcyk7Ci0KLXZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxl
cyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5
ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0
aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXll
ckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKLQot
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JSZWN0
T3Zlck5vVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOwotCi12b2lkIGxheWVy
U2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbihib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIp
OwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFy
Z2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAxOSwgOTAsIDgwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgxMSwgMjAsIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7CisKKyAgICAgICAgLyogSnVz
dGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAgICAgICAgICAgICAgICAgICAg
ICAxMDAKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICB8
MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKKyAgICAgICAgICAgMTArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgMTAwIHx8IDMwICAgICAgICAg
ICAgICAgICB8ICAgICBsYXllcjIgIHwKKyAgICAgICAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICB8IHwKKyAgICAgICAgICAgIHx8IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgIHwgfAorICAgICAgICAgICAgK3wtfC0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAg
fCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwg
NTEwCisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUxMCB8IHwK
KyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAg
ICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICA1MjAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTEwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVu
dExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CitBTExfQ0NPQ0NMVVNJ
T05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNp
YmxpbmdzV2l0aFR3b1RyYW5zZm9ybXMpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0g
NTEyOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9w
YXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7Cisg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBsYXll
clRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBsYXllclRyYW5zZm9ybS5y
b3RhdGUoOTApOworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgICAgICBPd25QdHI8Q29u
dGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAg
ICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAg
IENvbnRlbnRMYXllclR5cGUqIGJsdXJMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihw
YXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1
MDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogb3BhY2l0eUxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQo
MzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJU
eXBlKiBvcGFxdWVMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVy
VHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
IAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOworICAg
ICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlvbjo6QkxVUikp
OworICAgICAgICBibHVyTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKKyAgICAgICAgZmlsdGVycy5vcGVy
YXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgICAgIG9wYXF1ZUxh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgZmlsdGVycy5vcGVy
YXRpb25zKCkuY2xlYXIoKTsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgICAgICBvcGFjaXR5TGF5ZXItPnNldEZpbHRlcnMoZmls
dGVycyk7CiAKLSAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRv
IGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0
IHN1cmZhY2UKLSAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0ZXIg
dHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdpbGwg
ZmFsbCBvdXRzaWRlCi0gICAgLy8gdGhlIHNjaXNzb3IgYW5kIGJlIGNvbnNpZGVyZWQgb2NjbHVk
ZWQuCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotfQorICAgICAgICBjYWxjRHJhd0V0
YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJP
ZmZPcmlnaW4sIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7CisgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLXZvaWQgZGFt
YWdlUmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50
LT5hZGRDaGlsZChsYXllcik7CisgICAgICAgIC8vIE9wYWNpdHkgbGF5ZXIgd29uJ3QgY29udHJp
YnV0ZSB0byBvY2NsdXNpb24uCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uob3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9u
LmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXIsIG9wYWNpdHlMYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBw
YXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKIAotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgICAgICAvLyBB
bmQgaGFzIG5vdGhpbmcgdG8gY29udHJpYnV0ZSB0byBpdHMgcGFyZW50IHN1cmZhY2UuCisgICAg
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVy
ZVNpemUgPSA1MTI7CisgICAgICAgIC8vIE9wYXF1ZSBsYXllciB3aWxsIGNvbnRyaWJ1dGUgdG8g
b2NjbHVzaW9uLgorICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9w
YXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLCBvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKKyAgICAgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFyZW50IHN1
cmZhY2UuCisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBUaGUgYmx1ciBsYXllciBuZWVk
cyB0byB0aHJvdyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0cmVlLgor
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKKworICAgICAgICAvLyBBbmQg
aXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihibHVyTGF5ZXIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNo
ZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllciwgYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOworCisgICAgICAgIC8vIEJ1dCB0aGUgb3BhcXVl
IGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50LgorICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisgICAgfQorfTsKIAotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKK0FMTF9DQ09DQ0xVU0lP
TlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyk7CiAKLSAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
dGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwg
dHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVDaGlsZCA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRl
bnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlU
ZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQg
PSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBh
cmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNh
bGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQor
fTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9U
RVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsK
IAotICAgIC8vIE91dHNpZGUgdGhlIGxheWVyJ3MgY2xpcCByZWN0LgotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2Ns
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE91dHNpZGVDaGlsZCA6
IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZv
aWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBv
d25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXll
clR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Cisg
ICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisg
ICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1
cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisg
ICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwor
ICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIu
Z2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJf
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQp
OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0
eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9v
bCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91
dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVj
dGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50
TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAg
IENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29u
dGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2Uo
KSk7CiAKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBUZXN0RGFtYWdlQ2xpZW50PFJlbmRlclN1cmZhY2VU
eXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotfQor
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJT
dXJmYWNlKCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclRpbGUsIGRhbWFnZVJlY3RPdmVyVGlsZSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkuaXNFbXB0eSgpKTsKIAotdm9pZCBkYW1hZ2VSZWN0T3Zl
ckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVu
dCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFk
ZENoaWxkKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsK
LSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsK
LSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CitBTExfQ0NPQ0NMVVNJ
T05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hp
bGQpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJM
aXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVu
dExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1
ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAg
ICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5n
ZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwg
b3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7
CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudCk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQpOwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwordGVtcGxh
dGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5h
bWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lv
blRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJU
eXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisg
ICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+
Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBv
d25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0
YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICBUZXN0RGFtYWdl
Q2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRh
bWFnZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50
TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRl
c3REYW1hZ2VSZWN0T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3du
UHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVl
KTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOwor
ICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJm
YWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJl
bnQucmVsZWFzZSgpKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgVGVz
dERhbWFnZUNsaWVudDxSZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCksICZkYW1hZ2UpOwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0
KDAsIDAsIDIwMCwgMjAwKSkpOwogCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLX0KKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAz
MDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSwgZGFt
YWdlUmVjdE92ZXJDdWxsZWRUaWxlKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCk7CiAKLXZvaWQgZGFtYWdlUmVj
dE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAg
ICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Us
IG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xp
cFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5n
ZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
LQotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVjdCg1MCwgNTAsIDIwMCwgMjAw
KSk7Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSwgJmRhbWFnZSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkp
OwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAs
IDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1
MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkp
OwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdF9kYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcywgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGls
ZXMpOwotCi12b2lkIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsK
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50
TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0
aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246
OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJl
bnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwot
Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0
KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwotCi0gICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAs
IDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BB
UVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJOb1RpbGVzLCBkYW1hZ2VS
ZWN0T3Zlck5vVGlsZXMpOwotCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9wYXF1ZUNv
bnRlbnRzUmVnaW9uRW1wdHkpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllcik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9w
YXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0
UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENv
bnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAg
ICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAg
ICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBh
cmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAw
LCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVs
ZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAsIDUwLCAy
MDAsIDIwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
bGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJ
bnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICB9Cit9OwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRl
cnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIGxheWVy
LT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKTsKIAotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UsIGZhbHNlKTsKK3RlbXBsYXRlPHR5cGVu
YW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRl
bnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9u
VHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlw
ZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAg
IHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNy
ZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3du
UGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMo
cGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCg1MCwgNTAsIDIwMCwgMjAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwg
MTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1
cmVTaXplID0gNTEyOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCk7CiAKLSAgICBwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBv
cGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdFBhcnRs
eU92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVj
dGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50
TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAg
IENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29u
dGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2Uo
KSk7CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8UmVuZGVyU3Vy
ZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworICAgICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
KyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAs
IDUwLCAxNTAsIDE1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMjAwLCAyMDApKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAg
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CiAKLSAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFj
ZSBib3VuZHMuCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKIAotICAgIC8v
IFRlc3Qgd2l0aG91dCBhbnkgc2Npc3NvcnMuCi0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CitBTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RQYXJ0bHlP
dmVyQ2hpbGQpOwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92
ZXJOb3RoaW5nIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0
ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRM
YXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgp
KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwg
MTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEw
MCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkp
OworICAgIH0KK307CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLX0KK0FMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dE92ZXJOb3RoaW5nKTsKIAotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVDb250
ZW50c1JlZ2lvbk5vbkVtcHR5KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQobGF5ZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBv
cGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJl
Y3RPdmVyTm90aGluZyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250
ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAg
ICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVh
c2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
bGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgw
LCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkuaXNFbXB0
eSgpKTsKKyAgICB9Cit9OwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFs
c2UsIGZhbHNlKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyTm90aGluZyk7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4
dHVyZVNpemUgPSA1MTI7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJl
bmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxh
eWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcg
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4g
b3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5
ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5
cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwor
ICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwogCi0gICAg
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVudDxS
ZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwog
Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgewotICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAg
ICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIs
IEludFJlY3QoMCwgMCwgMjAwLCAyMDApKS5pc0VtcHR5KCkpOwogCi0gICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9
Cit9OwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VS
X1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdmVyTm90aGluZyk7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5
cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbiA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENv
bnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVu
TXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJl
bnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAg
IGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAg
IC8vIFRoaXMgbGF5ZXIgaXMgdHJhbnNsYXRlZCB3aGVuIGRyYXduIGludG8gaXRzIHRhcmdldC4g
U28gaWYgdGhlIHNjaXNzb3IgcmVjdCBnaXZlbiBmcm9tIHRoZSB0YXJnZXQgc3VyZmFjZQorICAg
ICAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0ZXIgdHJhbnNsYXRp
bmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdpbGwgZmFsbCBvdXRz
aWRlCisgICAgICAgIC8vIHRoZSBzY2lzc29yIGFuZCBiZSBjb25zaWRlcmVkIG9jY2x1ZGVkLgor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7CiAgICAgfQorfTsKIAorQUxMX0NDT0NDTFVTSU9OVFJBQ0tF
Ul9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZP
cmlnaW4pOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4K
K2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5IDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgICAgIGxheWVyLT5zZXRPcGFx
dWVQYWludFJlY3QoSW50UmVjdCgyMCwgMjAsIDE4MCwgMTgwKSk7CisgICAgICAgIE93blB0cjxD
b250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7Cisg
ICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAg
ICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShw
YXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgZmFsc2UpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5y
ZWxlYXNlKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMjAsIDEyMCwgMTgwLCAxODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
CisgICAgICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5k
cy4KKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNj
aXNzb3JzLgorICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAg
IH0KK307CisKK01BSU5fQU5EX0lNUExfVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dE9wYXF1ZUNvbnRlbnRzUmVnaW9uRW1wdHkpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBl
LCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVD
b250ZW50c1JlZ2lvbk5vbkVtcHR5IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgxNTAsIDE1MCwgMTAw
LCAxMDApKTsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRo
aXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50
ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKKyAgICAgICAgY2Fs
Y0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyNTAsIDI1MCwg
NTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisKKyAgICAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVl
Q29udGVudHNSZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOworCisgICAgICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7
CisKKyAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTIwLCAxMjAsIDE4MCwgMTgw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNv
bnRlbnRzUmVjdChJbnRSZWN0KDE1MCwgMTUwLCAxMDAsIDEwMCkpOworCisgICAgICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7
CisKKyAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjUwLCAyNTAsIDUwLCA1MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgfQogICAgIH0KLX0K
K307CisKK01BSU5fQU5EX0lNUExfVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9w
YXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkpOwogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131053</attachid>
            <date>2012-03-09 10:14:26 -0800</date>
            <delta_ts>2012-03-09 13:54:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120309131425.patch</filename>
            <type>text/plain</type>
            <size>229257</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhlMDZlNTNjMmQ4MjFhYzQwYmY2OWE4YWNmYzg4MmZhMzc1NTIwZjAuLjBlODE4MGU5MzUwM2Ri
ZmQzZDQwYmM3ODE3MjhmNTZhNDI5MWE5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsODkgQEAKKzIwMTItMDMtMDggIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3RzIGFuZCB0
ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hy
b21pdW06Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFRlc3RD
b250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRlc3RD
b250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250ZW50TGF5ZXJJbXBs
OjpUZXN0Q29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExh
eWVySW1wbDo6b3BhcXVlQ29udGVudHNSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENv
bnRlbnRMYXllckltcGw6OnNldE9wYXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6Om9jY2x1c2lv
bkluU2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U6Om9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3REYW1hZ2VDbGllbnQ6OmRhbWFnZVJlY3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0Ojp+Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0OjpjcmVhdGVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3Q6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdDo6Y3JlYXRlRHJhd2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3Q6OmNyZWF0ZURyYXdpbmdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNhbGNEcmF3RXRjKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OnNldFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3Q6OmFkZENoaWxkKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNp
b25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpydW5N
eVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdvVGlt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0
VHdvVGltZXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3Vy
ZmFjZVJvdGF0ZWRPZmZBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1
c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJl
bjo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGlu
Z1N1cmZhY2VTaWJsaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3M6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNm
b3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBp
bmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQ6
OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3Nv
clJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5
ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQ6OnJ1bk15
VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92
ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXll
clNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRlc3Qp
OgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5
T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3Jl
ZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkOjpy
dW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJl
Y3RPdmVyTm90aGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhp
bmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJOb3RoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RE
YW1hZ2VSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRy
YWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZP
cmlnaW46OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVl
Q29udGVudHNSZWdpb25FbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5v
bkVtcHR5OjpydW5NeVRlc3QpOgorCiAyMDEyLTAzLTA3ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVXNlIG9wYXF1ZSBwYWludHMgaW4g
Q0NPY2NsdXNpb25UcmFja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCAyNmQ1MjUyM2JlMTM0YzJlZmM5
NzhiMzRhMGJkNGMzMzIwNTA5Y2FjLi5iMjhhOWY5MDNiM2ZiMzU3NDhiZGJhMTg1NTYzMTJjMWFk
ZTVlY2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKIAogI2luY2x1
ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTQ1LDg0ICs0
Nyw2OCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3Mg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CitjbGFzcyBUZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6Ci0gICAgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKQot
ICAgICAgICA6IExheWVyQ2hyb21pdW0oKQotICAgIHsKLSAgICB9CisgICAgVGVzdENvbnRlbnRM
YXllckNocm9taXVtKCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgUmVnaW9u
IG9wYXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnRl
cnNlY3Rpb24obV9vcGFxdWVQYWludFJlY3QsIHZpc2libGVMYXllclJlY3QoKSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBzZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRS
ZWN0KSB7IG1fb3BhcXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAgdmlydHVh
bCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rp
b24obV9vcGFxdWVDb250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KKyAgICB2b2lk
IHNldE9wYXF1ZUNvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3Qp
IHsgbV9vcGFxdWVDb250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KIAogcHJpdmF0
ZToKLSAgICBJbnRSZWN0IG1fb3BhcXVlUGFpbnRSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVD
b250ZW50c1JlY3Q7CiB9OwogCi12b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCi17Ci0g
ICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwotICAgIGxheWVyLT5zZXRTdWJsYXll
clRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKLSAgICBsYXllci0+c2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9u
KTsKLSAgICBsYXllci0+c2V0Qm91bmRzKGJvdW5kcyk7Ci19Ci0KLXZvaWQgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCogbGF5
ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlLCBib29sIG9w
YXF1ZUxheWVycykKLXsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLCB0
cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwotICAgIGlmIChvcGFxdWVMYXllcnMpCi0gICAg
ICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZShmYWxzZSk7Ci0gICAgICAgIGlmIChvcGFxdWUpCi0gICAgICAgICAgICBsYXll
ci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgp
KTsKLSAgICB9Ci19CitzdGF0aWMgaW50IG5leHRDQ0xheWVySW1wbElkID0gMDsKKworY2xhc3Mg
VGVzdENvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgeworcHVibGljOgorICAg
IFRlc3RDb250ZW50TGF5ZXJJbXBsKCkgOiBDQ0xheWVySW1wbChuZXh0Q0NMYXllckltcGxJZCsr
KSB7IHNldERyYXdzQ29udGVudCh0cnVlKTsgfQorCisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVl
Q29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFxdWVDb250
ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZUNvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFxdWVDb250
ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KK3ByaXZhdGU6CisgICAgSW50UmVjdCBt
X29wYXF1ZUNvbnRlbnRzUmVjdDsKK307CiAKIC8vIEEgc3ViY2xhc3MgdG8gZXhwb3NlIHRoZSB0
b3RhbCBjdXJyZW50IG9jY2x1c2lvbi4KLWNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgOiBw
dWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwg
dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+IHsKIHB1YmxpYzoKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKEludFJlY3Qg
c2NyZWVuU2Npc3NvclJlY3QpCi0gICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyKHNjcmVlblNj
aXNzb3JSZWN0KQorICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVu
U2Npc3NvclJlY3QpCisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCkKICAgICAgICAgLCBtX292ZXJy
aWRlTGF5ZXJTY2lzc29yUmVjdChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcihJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXJEYW1hZ2VDbGllbnQqIGRhbWFnZUNsaWVudCkKLSAgICAgICAgOiBDQ09jY2x1c2lv
blRyYWNrZXIoc2NyZWVuU2Npc3NvclJlY3QsIGRhbWFnZUNsaWVudCkKKyAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJlbmRlclN1cmZhY2VUeXBlPiogZGFtYWdlQ2xp
ZW50KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3QsIGRhbWFnZUNsaWVudCkKICAgICAgICAgLCBt
X292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgUmVn
aW9uIG9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRy
YWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuOyB9Ci0gICAgUmVnaW9uIG9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tl
cjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQ7IH0KKyAgICBSZWdpb24gb2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuOyB9CisgICAgUmVnaW9uIG9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsg
cmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT46Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0OyB9CiAKLSAgICB2b2lkIHNldE9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsgQ0NPY2NsdXNpb25U
cmFja2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQotICAg
IHZvaWQgc2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7
IENDT2NjbHVzaW9uVHJhY2tlcjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQgPSBy
ZWdpb247IH0KKyAgICB2b2lkIHNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UoY29uc3QgUmVnaW9u
JiByZWdpb24pIHsgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSByZWdpb247IH0KKyAg
ICB2b2lkIHNldE9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikg
eyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojpt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lvbjsgfQogCiAgICAgdm9pZCBz
ZXRMYXllclNjaXNzb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9vdmVycmlkZUxheWVy
U2Npc3NvclJlY3QgPSB0cnVlOyBtX2xheWVyU2Npc3NvclJlY3QgPSByZWN0O30KICAgICB2b2lk
IHVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVj
dCA9IGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lz
c29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgY29uc3Qg
eyByZXR1cm4gbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3QgPyBtX2xheWVyU2Npc3NvclJlY3Qg
OiBDQ09jY2x1c2lvblRyYWNrZXI6OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5
ZXIpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UoY29uc3QgTGF5ZXJUeXBlKiBsYXllcikgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUxheWVy
U2Npc3NvclJlY3QgPyBtX2xheWVyU2Npc3NvclJlY3QgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRT
dXJmYWNlKGxheWVyKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9vdmVycmlkZUxheWVyU2Np
c3NvclJlY3Q7CiAgICAgSW50UmVjdCBtX2xheWVyU2Npc3NvclJlY3Q7CiB9OwogCi1jbGFzcyBU
ZXN0RGFtYWdlQ2xpZW50IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckRhbWFnZUNsaWVudCB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK2NsYXNzIFRlc3REYW1hZ2VD
bGllbnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50QmFzZTxSZW5kZXJT
dXJmYWNlVHlwZT4gewogcHVibGljOgogICAgIC8vIFRoZSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCBkYW1hZ2VSZWN0KGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSopIGNvbnN0
IHsgcmV0dXJuIG1fZGFtYWdlUmVjdDsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRhbWFnZVJl
Y3QoY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVJlY3Q7
IH0KIAogICAgIC8vIFRlc3Rpbmcgc3R1ZmYKICAgICBUZXN0RGFtYWdlQ2xpZW50KGNvbnN0IEZs
b2F0UmVjdCYgZGFtYWdlUmVjdCkgOiBtX2RhbWFnZVJlY3QoZGFtYWdlUmVjdCkgeyB9CkBAIC0x
MzIsMjA4MSArMTE4LDE2NDggQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kYW1hZ2VSZWN0
OwogfTsKIAotI2RlZmluZSBURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoRlVMTFRFU1RO
QU1FLCBTSE9SVFRFU1ROQU1FKSBcCi0gICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZUxheWVy
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBTSE9SVFRFU1ROQU1FKHRydWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlUGFpbnRS
ZWN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IFNIT1JUVEVTVE5BTUUoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFj
ZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xh
c3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIH5DQ09jY2x1c2lvblRyYWNrZXJUZXN0KCkKKyAgICB7CisgICAgICAg
IG1fcm9vdENocm9taXVtLmNsZWFyKCk7CisgICAgICAgIG1fcm9vdEltcGwuY2xlYXIoKTsKKyAg
ICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21pdW0uY2xlYXIoKTsKKyAgICAgICAg
bV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbC5jbGVhcigpOworCisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICAvLyBEbyB0aGlzIGFmdGVyIGZyZWVpbmcgZXZlcnl0aGluZy4gRG9uJ3QgbGVhdmUg
dGhlIFByb3h5IGluIGFuIHVuZXhwZWN0ZWQgc3RhdGUgZm9yIG90aGVyIHRlc3RzLgorICAgICAg
ICBDQ1Byb3h5OjpzZXRDdXJyZW50VGhyZWFkSXNJbXBsVGhyZWFkKGZhbHNlKTsKKyNlbmRpZgog
ICAgIH0KIAotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbihib29sIG9wYXF1ZUxheWVy
cykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJl
aW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChsYXllcik7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxh
eWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
ci5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLQotICAgIG9jY2x1
c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwg
NzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3
MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAy
OSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMx
LCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzEsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwotfQotCi1URVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFk
ZGVkVG9PY2NsdWRlZFJlZ2lvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24pOwotCi12b2lk
IGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKGJvb2wgb3BhcXVlTGF5ZXJz
KQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxk
KGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAg
IGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgbGF5ZXJUcmFuc2Zvcm0u
cm90YXRlKDkwKTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0K
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQot
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxh
eWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAs
IDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZh
dWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwg
NzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwg
NzAsIDcwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5
KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAs
IDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMjks
IDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
MjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzEsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAx
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMx
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRf
UEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhSb3RhdGlvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRp
b24pOwotCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uKGJv
b2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJh
bnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBw
YXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVy
VHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyMCwgMjApOwotCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQo
MzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50
IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5k
cygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChw
YXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxp
c3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwg
NTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExh
eWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1
MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDQ5LCA1MCwg
NTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1
MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDUwLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA0
OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA1MCwgMSwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1
MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA1MSwgNTAs
IDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNTEsIDUxLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMTAw
LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDks
IDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0
TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0
eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUw
LCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDQ5
LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAs
IDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDQ5LCAx
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
NTEsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKS5pc0VtcHR5
KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCg1MCwgNTEsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg0OSwgNTEsIDEsIDQ5KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoNDksIDUxLCA1MCwgNTApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci19Ci0KLVRFU1RfT1BB
UVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lv
bldpdGhUcmFuc2xhdGlvbik7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRo
Um90YXRlZFN1cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0
aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVu
ZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxkLT5h
ZGRDaGlsZChsYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9y
bTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxkVHJh
bnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0y
NTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
Y2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNp
emUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50
LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIElu
dFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwg
NjAsIDcxKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJl
Y3QoMTAsIDQzMCwgNjEsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7Ci0gICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOwotICAgIG9jY2x1
c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAs
IDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYw
KSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
NDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0gICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLQotICAgIC8q
IEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXJ8OgotICAg
ICAgICAgICAgICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAg
IHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8
OiAvLy8vLwotICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0ZSg5
MCkgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICB8IDMwICsg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHwgICAgfCAgMTAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8
ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAotICAgICAgfCAgICB8MTArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICB8Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8v
Ly8vLy8vL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8v
Ly8vfDYwICAgICAgICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98
ICAgICAgICAgICAgICB8ICB8Ci0gICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAg
ICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
IHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAot
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAg
ICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDEwfAotICAgICAgICAgICAr
LS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAgICAgICAg
IHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCi0gICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUw
MAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFj
ZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpOwotCi12b2lk
IGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayhib29s
IG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5z
Zm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gY2hpbGQyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKLSAgICBw
YXJlbnQtPmFkZENoaWxkKGNoaWxkMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGls
ZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAg
IGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OwotCi0gICAgLy8gfGNoaWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdldCBjb25zaWRl
cmVkIGJ5IENDT2NjbHVzaW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hpbGR8J3MuIFRo
aXMgZXhlcmNpc2VzIGRpZmZlcmVudCBjb2RlIGluCi0gICAgLy8gbGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UsIGFzIHRoZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCi0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNjAsIDIwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNl
dENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBk
dW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOwotCi0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotCi0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5
LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRS
ZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwg
NDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwot
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAs
IDEwMDApKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAg
ICAvLyBUaGlzIGlzIHRoZSBsaXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVkIGJ5IGNoaWxkMgotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0g
ICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgYm90aCBzaWRlcyBvZiBjaGlsZDIsIHNvIGl0IHdpbGwg
YmUgdGhlIG9yaWdpbmFsIHJlY3QuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAs
IDYwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIElu
dFJlY3QoOSwgNDMwLCA2MCwgODApKSk7Ci0gICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdHdvIGFk
amFjZW50IHNpZGVzIG9mIGNoaWxkMiwgYW5kIHNob3VsZCBpbmNsdWRlZCB0aGUgdW5vY2NsdWRl
ZCBwYXJ0cyBvZiBlYWNoIHNpZGUuCi0gICAgLy8gVGhpcyBhbHNvIGRlbW9uc3RyYXRlcyB0aGF0
IHRoZSByZWN0IGNhbiBiZSBhcmJpdHJhcnkgYW5kIGRvZXMgbm90IGdldCBjbGlwcGVkIHRvIHRo
ZSBsYXllcidzIHZpc2libGVMYXllclJlY3QoKS4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KC0xMCwgNDMwLCAyMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgLy8gVGhpcyBleHRlbmRz
IHBhc3QgdGhyZWUgYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBzbyBpdCBzaG91bGQgY29udGFp
biB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNpZGUuIFRoZSBsZWZ0Ci0gICAgLy8gYW5k
IGJvdHRvbSBlZGdlcyBhcmUgY29tcGxldGVseSB1bm9jY2x1ZGVkIGZvciBzb21lIHJvdy9jb2x1
bW4gc28gd2UgZ2V0IGJhY2sgdGhlIG9yaWdpbmFsIHF1ZXJ5IHJlY3QuCi0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcw
KSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwg
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMw
LCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgODApKS5pc0Vt
cHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwg
SW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MjksIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKS5p
c0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7
Ci0gICAgLy8gfGNoaWxkMnwgc2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBh
cmUgbGVhdmluZyBub3cKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkLmdldCgpLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgVmVjdG9yPEludFJl
Y3Q+IHNjcmVlbiA9IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKTsK
LSAgICBWZWN0b3I8SW50UmVjdD4gdGFyZ2V0ID0gb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLnJlY3RzKCk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDkwLCAzMCwgMTAsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwg
NjAsIDEwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMx
LCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDMwLCA2MCwgMTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjksIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoOTAsIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMw
LCAzMSwgNjAsIDEwKSkuaXNFbXB0eSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYw
KSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgy
OSwgNDAsIDcwLCA2MCkpKTsKLSAgICAvLyBUaGlzIHJlY3QgaXMgbW9zdGx5IG9jY2x1ZGVkIGJ5
IHxjaGlsZDJ8LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDM5LCAxMCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAz
OSwgNzAsIDYwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgdG9wL3JpZ2h0IGVu
ZHMgb2YgfGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAx
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgbGVmdC9y
aWdodCBlbmRzIG9mIHxjaGlsZDJ8LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDM5
LCA4MCwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
MCwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlv
biBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Ci0gICAgICAgICAgICAgICAx
MDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCi0gICAg
ICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAg
ICAgICAgfCAgICAgMzAgICA2MCAgICAgICAgIHwgICAgfGNoaWxkMnw6IFxcXFxcCi0gICAgICB8
IDMwICsgLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAg
ICAgfCAgMzAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHwgICAg
fCAgMTAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8
ICAgICB8XFxcXFxcXFxcXFxcfCAgfDEwICAgICAgICAgICAgICAgfAotICAgICAgfCAgICB8MTAr
LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwgICst
LXxcXFxcXFxcXFxcXFx8LS0tLS0tLS0tLS0tLS0tLS0rICB8Ci0gICAgICB8ICAgICsgLS0tLS0t
LS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgKy0t
LS0tLS0tLS0tLSsvL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgIHwgICAgfCAgfCAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8v
Ly8vLy8vLy8vfDYwICAgICAgICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8v
Ly8vLy98ICAgICAgICAgICAgICB8ICB8Ci0gICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8
Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDEwfAotICAgICAg
ICAgICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAg
ICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCi0gICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAgICAgICAgICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUwMAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNl
QWxyZWFkeU9uU3RhY2ssIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJl
YWR5T25TdGFjayk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRl
ZE9mZkF4aXNTdXJmYWNlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxkLT5hZGRD
aGlsZChsYXllcik7Ci0KLSAgICAvLyBOb3cgcm90YXRlIHRoZSBjaGlsZCBhIGxpdHRsZSBtb3Jl
IHNvIGl0IGlzIG5vdCBheGlzLWFsaWduZWQuIFRoZSBwYXJlbnQgd2lsbCBubyBsb25nZXIgYmUg
b2NjbHVkZWQgYnkgfGxheWVyfCwgYnV0Ci0gICAgLy8gdGhlIGNoaWxkJ3Mgb2NjbHVzaW9uIHNo
b3VsZCBiZSB1bmNoYW5nZWQuCi0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
Zm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxk
VHJhbnNmb3JtLnJvdGF0ZSg5NSk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAs
IC0yNTApOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAg
bGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7
Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7
Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVt
bXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAg
ICBJbnRSZWN0IGNsaXBwZWRMYXllckluQ2hpbGQgPSBsYXllclRyYW5zZm9ybS5tYXBSZWN0KGxh
eWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKGNsaXBwZWRMYXllckluQ2hpbGQsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlw
cGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7
Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXllcklu
Q2hpbGQubW92ZSgxLCAwKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExh
eWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAg
ICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgIGNsaXBwZWRMYXllckluQ2hp
bGQubW92ZSgwLCAtMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGls
ZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7Ci0gICAg
Y2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIDEpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNs
aXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5t
b3ZlKDAsIC0xKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGls
ZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzUs
IDU1LCAxLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJv
dGF0ZWRPZmZBeGlzU3VyZmFjZSk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoTXVsdGlwbGVPcGFxdWVMYXllcnMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhp
cyBpcyBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0IGJ1dCBub3cgd2UgbWFrZSBhIGZldyBv
cGFxdWUgbGF5ZXJzIGluc2lkZSBvZiB8Y2hpbGR8IHNvIHRoYXQgdGhlIG9jY2x1ZGVkIHBhcnRz
IG9mIGNoaWxkIGFyZSBub3QgYSBzaW1wbGUgcmVjdC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNl
KCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxh
eWVyMSk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUw
LCAyNTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNDQwKSwgdHJ1ZSwg
b3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCksIEludFNpemUoNTAwLCA2
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0
cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
LQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMi5n
ZXQoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQo
KSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwotCi0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
OSwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0
KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQu
Z2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwg
NzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAz
OSwgNzAsIDYwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYw
KSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDM5LCA3MCwgMSksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAs
IDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgNDAs
IDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDQxLCA3MCwgNjApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2Nj
bHVzaW9uIGZyb20gfGxheWVyMXwgYW5kIHxsYXllcjJ8OgotCi0gICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJl
Z2lvbiBvZiB8bGF5ZXIxfDogLy8vLy8KLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXIyfDogXFxcXFwKLSAgICAgICB8ICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgIHwgICAgIHwgICAgICAgICAgICAg
ICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLSsgIHwKLSAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAg
ICAgfCAgfAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98NjAgICAgICAgICAgICB8ICB8
Ci0gICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAgICAgICAgICAgIHwgIHwKLSAgICAg
ICArLS18LS18LS0tLS0tLS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAotICAgICAgICAyMHwx
MHwgICAgIDcwICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAg
fAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8MTB8Ci0gICAg
ICAgICAgfCAgKy0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLSsKLSAgICAgICAgICB8
ICAgICAgICAgICAgICAgfCA0OTAgICAgICAgICAgICAgfAotICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAg
ICA0NDAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVP
cGFxdWVMYXllcnMsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVl
TGF5ZXJzKTsKLQotdm9pZCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1
cmZhY2VzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUg
cmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMSk7Ci0gICAgcGFyZW50LT5hZGRD
aGlsZChjaGlsZDIpOwotICAgIGNoaWxkMS0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBjaGlsZDIt
PmFkZENoaWxkKGxheWVyMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
Zm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxk
VHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAs
IC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkVHJhbnNm
b3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZFRyYW5zZm9y
bSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAg
IGNoaWxkMS0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLSAgICBjaGlsZDItPnNldE1hc2tzVG9C
b3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVt
bXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAw
MCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyMi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCA0MCwg
ODAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQyMCwgNjAsIDgwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgp
LCBJbnRSZWN0KDAsIDQyMCwgNjAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xLCA0MjAsIDYwLCA4MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0
MTksIDYwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
Mi5nZXQoKSwgSW50UmVjdCgwLCA0MjAsIDYxLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0MjAsIDYwLCA4MSkpKTsK
LQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBj
aGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgNDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEs
IDQzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQxLmdldCgpLCBJbnRSZWN0KDAsIDQyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAsIDQzMCwgNzEsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRS
ZWN0KDAsIDQzMCwgNzAsIDcxKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGNoaWxkMS5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDMw
LCA4MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAyOSwgNzAsIDcwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgNDAsIDgwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxOSwgNDAsIDgwLCA2
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRo
ZSBhYm92ZSBvY2NsdXNpb246Ci0gICAgICAgICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgfCAgICAz
MCAgICAgICAgICAgICAgIHwgICAgICAgY2hpbGQxCi0gICAgICB8ICAzMCsgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgNDB8ICAgICAgICAgICAgICAgIHwgICAg
IGNoaWxkMiAgICAgIHwKLSAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAot
ICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAgIHwg
IHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0gICAgICArLS18LXwtLS0t
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgNTAwCi0gICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8ICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtKwotICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKLSAgICAgKi8KLX0KLQotVEVT
VF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc3VyZmFj
ZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcywgc3VyZmFjZU9jY2x1c2lv
bldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcyk7Ci0KLXZvaWQgc3VyZmFjZU9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0
aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKGNoaWxkMik7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChsYXllcjEpOwotICAg
IGNoaWxkMi0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNo
aWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0g
ICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAvLyBUaGUgb3duaW5nIGxheWVycyBoYXZlIHZlcnkgZGlm
ZmVyZW50IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkgb3duLgotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwg
MzApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNp
emUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwg
NDApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNp
emUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgLy8gTWFrZSB0aGVtIGJv
dGggcmVuZGVyIHN1cmZhY2VzCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIGNo
aWxkMS0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBjaGlsZDItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0KLSAgICBjaGlsZDEtPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwotICAgIGNoaWxkMi0+
c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgt
MjAsIC0yMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwg
NDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwg
NzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdl
dCgpLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVj
dCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNj
aXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5n
ZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDE5LCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcw
LCA4MSkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0yMCwg
LTIwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQyLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkMi5nZXQoKSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQo
KSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEw
LCA0MzAsIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMS5nZXQoKSwgSW50UmVjdCgtMTEsIDQzMCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDI5LCA4MCwg
NzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCks
IEludFJlY3QoLTEwLCA0MzAsIDgxLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOwotCi0g
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5nZXQoKSk7Ci0gICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxk
MS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwg
MjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDIwLCA4MCwgODApKSk7Ci0KLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyMCwgNzAs
IDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDI5LCAyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAxOSwgNzAsIDgwKSkpOwotCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwg
MzAsIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgxOSwgMzAsIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMjksIDgwLCA3MCkpKTsK
LQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246Ci0gICAgICAg
ICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgIDIw
ICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKLSAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIDEwMCB8ICAzMHwgICAgICAgICAgICAgICAgfCAgICAg
bGF5ZXIyICAgICAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0g
ICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAotICAgICAgfCAg
fCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAgICAgICstLXwtfC0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfCA1MTAKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCi0gICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAotICAgICAqLwotfQotCi1URVNU
X09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNl
T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSwgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOwot
Ci12b2lkIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVyZW50VHJhbnNmb3Jtcyhi
b29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRy
YW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQy
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hp
bGQyKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVyMSk7Ci0gICAgY2hpbGQyLT5hZGRDaGls
ZChsYXllcjIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQxVHJhbnNmb3JtOwot
ICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxkMVRyYW5z
Zm9ybS5yb3RhdGUoLTkwKTsKLSAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0y
NTApOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQyVHJhbnNmb3JtOwotICAgIGNo
aWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxkMlRyYW5zZm9ybS5y
b3RhdGUoOTApOwotICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0K
LSAgICAvLyBUaGUgb3duaW5nIGxheWVycyBoYXZlIHZlcnkgZGlmZmVyZW50IGJvdW5kcyBmcm9t
IHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkgb3duLgotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQx
LmdldCgpLCBjaGlsZDFUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgxMCwg
MTApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMjApLCBJbnRTaXplKDUxMCwgNTIwKSwgdHJ1
ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxk
Mi5nZXQoKSwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAs
IDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFj
ZXMKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25z
KCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgw
LjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgY2hpbGQxLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOwotICAgIGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIGNoaWxk
MS0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgY2hpbGQyLT5zZXRNYXNrc1RvQm91bmRz
KGZhbHNlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxh
eWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAx
MDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwg
SW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEw
LCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwg
ODEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi5n
ZXQoKSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQoKSk7Ci0KLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMjAsIDgwLCA5
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwg
SW50UmVjdCg0MTksIC0yMCwgODAsIDkwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQyMCwgLTIxLCA4MCwgOTApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIw
LCAtMTksIDgwLCA5MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMS5nZXQoKSwgSW50UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOwotCi0gICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAs
IDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwot
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgxMCwgMjAsIDkwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg5LCAyMCwgOTAsIDgwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAx
OSwgOTAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDExLCAyMCwgOTAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAyMSwgOTAsIDgwKSkpOwot
Ci0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKLSAgICAgICAg
ICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHwyMCAgICAg
ICAgICAgICAgICAgICB8ICAgICAgIGxheWVyMQotICAgICAxMCstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfHwgMzAgICAgICAgICAgICAgICAgIHwgICAgIGxheWVy
MiAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAg
ICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKLSAgICAgIHx8IHwgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgfHwgfCAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICArfC18LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAg
ICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fCA1MTAKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEwIHwgfAotICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgIDUyMCAgICAgICAgICAgICB8
IHwKLSAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAotICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICA1
MTAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVz
aW9uVHJhY2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZmZXJlbnRUcmFu
c2Zvcm1zLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZlcmVudFRyYW5zZm9ybXMp
OwotCi12b2lkIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMoYm9vbCBvcGFxdWVMYXll
cnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBi
ZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGJs
dXJMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IG9w
YWNpdHlMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IG9wYXF1ZUxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVu
dC0+YWRkQ2hpbGQoYmx1ckxheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKG9wYWNpdHlMYXll
cik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChvcGFxdWVMYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUo
MjUwLCAyNTApOwotICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgbGF5ZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhibHVy
TGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3Rpbmcob3BhcXVlTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhY2l0eUxheWVyLmdldCgpLCBsYXllclRyYW5zZm9y
bSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKK3Byb3RlY3RlZDoKKyAgICBQYXNzT3duUHRyPENvbnRlbnRMYXllclR5cGU+IGNyZWF0
ZVJvb3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCisgICAg
eworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gbGF5ZXIgPSBhZG9wdFB0cihuZXcg
Q29udGVudExheWVyVHlwZSgpKTsKKworICAgICAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5z
Zm9ybSk7CisgICAgICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwg
MCkpOworICAgICAgICBsYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICBsYXll
ci0+c2V0Qm91bmRzKGJvdW5kcyk7CisgICAgICAgIHNldFByb3BlcnRpZXMobGF5ZXIuZ2V0KCkp
OworCisgICAgICAgIGlmIChvcGFxdWVMYXllcnMpCisgICAgICAgICAgICBsYXllci0+c2V0T3Bh
cXVlKG9wYXF1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1
ZShmYWxzZSk7CisgICAgICAgICAgICBpZiAob3BhcXVlKQorICAgICAgICAgICAgICAgIGxheWVy
LT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNS
ZWN0KEludFJlY3QoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFz
ZSgpOworICAgIH0KIAorICAgIExheWVyVHlwZSogY3JlYXRlTGF5ZXIoTGF5ZXJUeXBlKiBwYXJl
bnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgewotICAgICAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVu
ZChCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwLCBXZWJDb3JlOjpQZXJjZW50
KSwgRmlsdGVyT3BlcmF0aW9uOjpCTFVSKSk7Ci0gICAgICAgIGJsdXJMYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKKyAgICAgICAgT3duUHRyPExheWVyVHlwZT4gbGF5ZXIgPSBjcmVhdGUocGFy
ZW50KTsKKworICAgICAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgICAg
IGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAg
ICAgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBs
YXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICBsYXllci0+c2V0Qm91bmRzKGJv
dW5kcyk7CisgICAgICAgIHNldFByb3BlcnRpZXMobGF5ZXIuZ2V0KCkpOworCisgICAgICAgIExh
eWVyVHlwZSogbGF5ZXJQdHIgPSBsYXllci5nZXQoKTsKKyAgICAgICAgYWRkQ2hpbGQocGFyZW50
LCBsYXllci5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4gbGF5ZXJQdHI7CiAgICAgfQogCisg
ICAgTGF5ZXJUeXBlKiBjcmVhdGVTdXJmYWNlKExheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsKKyAgICAgICAgTGF5ZXJUeXBlKiBsYXllciA9
IGNyZWF0ZUxheWVyKHBhcmVudCwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKICAgICAg
ICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwogICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAu
NSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICAgICAgb3BhcXVlTGF5ZXItPnNl
dEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
ICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgfQogCisgICAgQ29udGVudExheWVyVHlwZSogY3Jl
YXRlRHJhd2luZ0xheWVyKExheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6
ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKICAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5
ZXJUeXBlPiBsYXllciA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJUeXBlKCkpOworCisgICAg
ICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgbGF5ZXItPnNldFN1
YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBsYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIGxheWVyLT5zZXRQb3Np
dGlvbihwb3NpdGlvbik7CisgICAgICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKKyAgICAg
ICAgc2V0UHJvcGVydGllcyhsYXllci5nZXQoKSk7CisKKyAgICAgICAgaWYgKG9wYXF1ZUxheWVy
cykKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChv
cGFxdWUpCisgICAgICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRS
ZWN0KEludFBvaW50KCksIGJvdW5kcykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CisgICAg
ICAgIGFkZENoaWxkKHBhcmVudCwgbGF5ZXIucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIGxh
eWVyUHRyOworICAgIH0KKworICAgIENvbnRlbnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdTdXJm
YWNlKExheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBi
b29sIG9wYXF1ZSkKKyAgICB7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gY3Jl
YXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzLCBvcGFx
dWUpOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZpbHRlcnMu
b3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFkpKTsKLSAgICAgICAgb3BhY2l0
eUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAu
NSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICAgICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CisgICAgICAgIHJldHVybiBsYXllcjsKICAgICB9CiAKIAotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIC8vIE9wYWNpdHkg
bGF5ZXIgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYWNpdHlMYXllci5nZXQoKSk7Ci0g
ICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXIuZ2V0
KCksIG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQot
ICAgIC8vIEFuZCBoYXMgbm90aGluZyB0byBjb250cmlidXRlIHRvIGl0cyBwYXJlbnQgc3VyZmFj
ZS4KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgIC8vIE9wYXF1ZSBsYXllciB3aWxs
IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKG9wYXF1ZUxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLmdldCgpLCBvcGFxdWVMYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLQotICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8gdGhlIHBhcmVudCBz
dXJmYWNlLgotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotCi0gICAgLy8gVGhlIGJsdXIgbGF5ZXIgbmVlZHMgdG8gdGhyb3cgYXdheSBhbnkgb2Nj
bHVzaW9uIGZyb20gb3V0c2lkZSBpdHMgc3VidHJlZS4KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHko
KSk7Ci0KLSAgICAvLyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGJsdXJMYXllci5nZXQoKSk7Ci0gICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIuZ2V0KCksIGJs
dXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBCdXQg
dGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVudC4K
LSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLX0K
LQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
b2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycywgb2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRo
RmlsdGVycyk7Ci0KLXZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5
ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVu
dExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAg
b2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkp
OwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyVGlsZSwgbGF5
ZXJTY2lzc29yUmVjdE92ZXJUaWxlKTsKLQotdm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxl
KGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAg
cGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXll
cik7CisgICAgVGVzdENvbnRlbnRMYXllckltcGwqIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5
ZXJJbXBsKiByb290LCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBwYXNzUm9vdCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyb290ID09IHBhc3NSb290LmdldCgpKTsKKyAgICAgICAgVmVjdG9yPEND
TGF5ZXJJbXBsKj4gZHVtbXlMYXllckxpc3Q7CisgICAgICAgIGludCBkdW1teU1heFRleHR1cmVT
aXplID0gNTEyOworCisgICAgICAgIEFTU0VSVCghcm9vdC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgcm9vdC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICByb290LT5yZW5kZXJT
dXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+
Ym91bmRzKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCByb290LT5ib3VuZHMoKSkpOworICAgICAgICBtX3Jvb3RJbXBsID0gcGFzc1Jvb3Q7
CisgICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGwuYXBwZW5kKG1fcm9vdEltcGwu
Z2V0KCkpOworCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJvb3QsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbCwgZHVtbXlMYXllckxpc3QsIDAs
IGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICByZXR1cm4gcm9vdDsKKyAgICB9CiAKLSAg
ICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBw
ZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMo
ZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgVGVzdENvbnRl
bnRMYXllckNocm9taXVtKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIHJv
b3QsIFBhc3NPd25QdHI8TGF5ZXJDaHJvbWl1bT4gcGFzc1Jvb3QpCisgICAgeworICAgICAgICBB
U1NFUlQocm9vdCA9PSBwYXNzUm9vdC5nZXQoKSk7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICAgICAgaW50IGR1bW15TWF4VGV4dHVy
ZVNpemUgPSA1MTI7CisKKyAgICAgICAgQVNTRVJUKCFyb290LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICByb290LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIHJvb3QtPnJlbmRl
clN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290
LT5ib3VuZHMoKSkpOworICAgICAgICByb290LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50
Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7CisgICAgICAgIG1fcm9vdENocm9taXVtID0gYWRv
cHRSZWYocGFzc1Jvb3QubGVha1B0cigpKTsKKyAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0Q2hyb21pdW0uYXBwZW5kKG1fcm9vdENocm9taXVtKTsKKworICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCBy
b290LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZUxheWVy
TGlzdENocm9taXVtLCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAg
ICAgIHJldHVybiByb290OworICAgIH0KIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHZpcnR1YWwgdm9pZCBydW5N
eVRlc3QoKSA9IDA7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVt
bXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAKLSAgICBwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChwYXJlbnQpOworcHJpdmF0ZToKKyAgICB2b2lkIHNldFByb3BlcnRpZXMoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgeworICAgIH0KIAotICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwg
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICB2
b2lkIHNldFByb3BlcnRpZXMoQ0NMYXllckltcGwqIGxheWVyKQorICAgIHsKKyAgICAgICAgbGF5
ZXItPnNldENvbnRlbnRCb3VuZHMobGF5ZXItPmJvdW5kcygpKTsKKyAgICB9CiAKLSAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
OworICAgIFBhc3NPd25QdHI8TGF5ZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyQ2hyb21pdW0qIHBh
cmVudCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllciA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIucmVsZWFz
ZSgpLmxlYWtSZWYoKSk7CisgICAgfQogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICBQYXNzT3duUHRyPENDTGF5ZXJJ
bXBsPiBjcmVhdGUoQ0NMYXllckltcGwqIHBhcmVudCkKKyAgICB7CisgICAgICAgIE93blB0cjxD
Q0xheWVySW1wbD4gbGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKG5leHRDQ0xheWVySW1wbElk
KyspOworICAgICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOworICAgIH0KIAotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgIHZvaWQgYWRkQ2hpbGQoQ0NMYXllckltcGwqIHBhcmVudCwg
UGFzc093blB0cjxDQ0xheWVySW1wbD4gY2hpbGQpCisgICAgeworICAgICAgICBwYXJlbnQtPmFk
ZENoaWxkKGNoaWxkKTsKKyAgICB9CiAKLSAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lk
ZSB0aGUgc3VyZmFjZSBib3VuZHMuCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICB2b2lkIGFk
ZENoaWxkKExheWVyQ2hyb21pdW0qIHBhcmVudCwgUGFzc093blB0cjxMYXllckNocm9taXVtPiBj
aGlsZCkKKyAgICB7CisgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQoYWRvcHRSZWYoY2hpbGQubGVh
a1B0cigpKSk7CisgICAgfQogCi0gICAgLy8gVGVzdCB3aXRob3V0IGFueSBzY2lzc29ycy4KLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVy
U2Npc3NvclJlY3QoKTsKKyAgICAvLyBUaGVzZSBob2xkIG93bmVyc2hpcCBvZiB0aGUgbGF5ZXJz
IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHRlc3QuCisgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IG1fcm9vdENocm9taXVtOworICAgIE93blB0cjxDQ0xheWVySW1wbD4gbV9yb290SW1wbDsKKyAg
ICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
Q2hyb21pdW07CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbV9yZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0SW1wbDsKK307CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyNkZWZpbmUgUlVOX1RFU1RfTUFJ
Tl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUj
I01haW5UaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPExheWVyQ2hyb21pdW0s
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSwgVGVzdENvbnRlbnRMYXllckNocm9taXVtLCB0cnVlPiB7
IH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3BhcXVlTGF5ZXJzLCBydW5U
ZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisjZGVmaW5lIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFV
RV9QQUlOVFMoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3Bh
cXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFtZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0sIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSwgZmFsc2U+IHsgfTsgXAorICAgIFRF
U1RfRihDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3QpIHsgcnVuTXlU
ZXN0KCk7IH0KKworI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfTEFZRVJTX1JF
TEVBU0UoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVl
TGF5ZXJzIDogcHVibGljIENsYXNzTmFtZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBU
ZXN0Q29udGVudExheWVySW1wbCwgdHJ1ZT4geyB9OyBcCisgICAgVEVTVF9GKENsYXNzTmFtZSMj
SW1wbFRocmVhZE9wYXF1ZUxheWVycywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQorI2RlZmlu
ZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfUEFJTlRTX1JFTEVBU0UoQ2xhc3NOYW1lKSBc
CisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENs
YXNzTmFtZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBUZXN0Q29udGVudExheWVySW1w
bCwgZmFsc2U+IHsgfTsgXAorICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVQ
YWludHMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9U
SFJFQURfT1BBUVVFX0xBWUVSU19ERUJVRyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05h
bWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDTGF5ZXJJbXBs
LCBDQ1JlbmRlclN1cmZhY2UsIFRlc3RDb250ZW50TGF5ZXJJbXBsLCB0cnVlPiB7IH07IFwKKyAg
ICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlTGF5ZXJzLCBydW5UZXN0KSBcCisg
ICAgeyBcCisgICAgICAgIENDUHJveHk6OnNldEN1cnJlbnRUaHJlYWRJc0ltcGxUaHJlYWQodHJ1
ZSk7IFwKKyAgICAgICAgcnVuTXlUZXN0KCk7IFwKKyAgICB9CisjZGVmaW5lIFJVTl9URVNUX0lN
UExfVEhSRUFEX09QQVFVRV9QQUlOVFNfREVCVUcoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xh
c3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFtZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlLCBUZXN0Q29udGVudExheWVySW1wbCwgZmFsc2U+IHsgfTsg
XAorICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVQYWludHMsIHJ1blRlc3Qp
IFwKKyAgICB7IFwKKyAgICAgICAgQ0NQcm94eTo6c2V0Q3VycmVudFRocmVhZElzSW1wbFRocmVh
ZCh0cnVlKTsgXAorICAgICAgICBydW5NeVRlc3QoKTsgXAorICAgIH0KIAotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisjaWZuZGVmIE5ERUJVRworI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFR
VUVfTEFZRVJTIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlNfREVCVUcKKyNkZWZp
bmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX1BBSU5UUyBSVU5fVEVTVF9JTVBMX1RIUkVB
RF9PUEFRVUVfUEFJTlRTX0RFQlVHCisjZWxzZQorI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVB
RF9PUEFRVUVfTEFZRVJTIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlNfUkVMRUFT
RQorI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfUEFJTlRTIFJVTl9URVNUX0lN
UExfVEhSRUFEX09QQVFVRV9QQUlOVFNfUkVMRUFTRQorI2VuZGlmCisKKyNkZWZpbmUgQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX01BSU5fVEhS
RUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJFQURf
T1BBUVVFX1BBSU5UUyhDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFR
VUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9Q
QUlOVFMoQ2xhc3NOYW1lKQorCisjZGVmaW5lIE1BSU5fQU5EX0lNUExfVEhSRUFEX1RFU1QoQ2xh
c3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05h
bWUpIFwKKyAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkK
KwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zIDogcHVibGljIENDT2NjbHVz
aW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVy
VHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQor
ICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMt
PmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0g
b3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdF
dGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwot
fQorICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjks
IDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworCisgICAg
ICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDMxLCA3MCwgNzApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAs
IDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MjksIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgyOSwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MjksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEs
IDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MDAsIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMxLCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMzEsIDMxLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOworICAgIH0KK307CiAKLVRFU1RfT1BBUVVF
X0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNjaXNzb3JS
ZWN0T3ZlclRpbGUsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUpOworQUxMX0NDT0NDTFVTSU9O
VFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOwog
Ci12b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykK
LXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFy
ZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVu
dExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0Um90YXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5z
bGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAg
ICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIEZpbHRlck9w
ZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWND
b21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0
aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
LSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgT3duUHRyPENvbnRlbnRM
YXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxh
eWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
KTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVM
YXllcnMpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5
ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAs
IDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEs
IDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51
c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwg
NzApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMjksIDcwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMjksIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAzMSwgNzAsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMx
LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAs
IDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwg
MzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcw
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5
LCAzMSwgNzAsIDcwKSkpOworICAgIH0KK307CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5k
cygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCks
IHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChw
YXJlbnQpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRl
c3RSb3RhdGVkQ2hpbGQpOwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVt
bXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVy
VHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJh
bnNsYXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90
ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyMCwgMjApOwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXll
clR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAgQ29u
dGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVy
VHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
KyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRM
YXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1
MCwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNTAsIDEsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDUxLCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNTEsIDUwLCA1MCkp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMTAwLCA1MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUxLCA1MCwg
NTApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAsIDEsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDQ5LCA0OSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCg1MSwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUw
KSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgMSwgNDkpLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsK
KyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisgICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0NDT0NDTFVT
SU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOwog
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDIwMCwgMTAwLCAxMDApKSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVu
YW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9w
YXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENo
aWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
Y2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1
MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIE93blB0
cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAg
ICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAg
ICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAg
ICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLX0KKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotVEVTVF9PUEFRVUVfQU5E
X1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92
ZXJDdWxsZWRUaWxlLCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwogCi12
b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVu
dExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRS
ZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJl
Y3QoMTAsIDQzMCwgNjAsIDcxKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5
ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5
LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZCwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7CisgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7Cisg
ICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxk
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgzMCwgNDEsIDcwLCA2MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVy
U2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAz
OSwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworICAgICAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKKworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24g
ZnJvbSB8bGF5ZXJ8OgorICAgICAgICAgICAgICAgICAgIDEwMAorICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
fDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLworICAgICAgICAgIHwgICAgMzAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8ICAgICAgICAgICAgICAg
fDEwICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKyAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8v
fCAgICAgNDIwICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8v
fDYwICAgICAgICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8v
fCAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0t
KyAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tfC0tKworICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0
OTAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKKyAgICAg
ICAgICovCisgICAgfQorfTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBw
YXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0Q2hpbGRJblJvdGF0ZWRDaGlsZCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXll
clR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZp
c2l0VGFyZ2V0VHdvVGltZXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJh
bnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAg
ICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIE93
blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1
ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsK
KyAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hp
bGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAg
ICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVy
VHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsK
KyAgICAgICAgLy8gfGNoaWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJmYWNlIGdldCBjb25zaWRl
cmVkIGJ5IENDT2NjbHVzaW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBvZiB8Y2hpbGR8J3MuIFRo
aXMgZXhlcmNpc2VzIGRpZmZlcmVudCBjb2RlIGluCisgICAgICAgIC8vIGxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlLCBhcyB0aGUgdGFyZ2V0IHN1cmZhY2UgaGFzIGFscmVhZHkgYmVlbiBzZWVu
LgorICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDYwLCAyMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBh
cmVudC5yZWxlYXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgt
MTAsIC0xMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkMik7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50
LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9F
USgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50
UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRS
ZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEs
IDYwLCA3MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGl0dGxlIHBpZWNlIG5vdCBvY2Ns
dWRlZCBieSBjaGlsZDIKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEs
IDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgYm90aCBzaWRlcyBv
ZiBjaGlsZDIsIHNvIGl0IHdpbGwgYmUgdGhlIG9yaWdpbmFsIHJlY3QuCisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkpOworICAgICAgICAvLyBU
aGlzIGV4dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBhbmQgc2hvdWxk
IGluY2x1ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4KKyAgICAgICAgLy8g
VGhpcyBhbHNvIGRlbW9uc3RyYXRlcyB0aGF0IHRoZSByZWN0IGNhbiBiZSBhcmJpdHJhcnkgYW5k
IGRvZXMgbm90IGdldCBjbGlwcGVkIHRvIHRoZSBsYXllcidzIHZpc2libGVMYXllclJlY3QoKS4K
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMjAsIDcwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcw
KSkpOworICAgICAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBhZGphY2VudCBzaWRlcyBv
ZiBjaGlsZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVh
Y2ggc2lkZS4gVGhlIGxlZnQKKyAgICAgICAgLy8gYW5kIGJvdHRvbSBlZGdlcyBhcmUgY29tcGxl
dGVseSB1bm9jY2x1ZGVkIGZvciBzb21lIHJvdy9jb2x1bW4gc28gd2UgZ2V0IGJhY2sgdGhlIG9y
aWdpbmFsIHF1ZXJ5IHJlY3QuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0
MzAsIDYwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJl
Y3QoLTEwLCA0MzAsIDYwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIElu
dFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwg
SW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVm
YXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCg5LCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3
MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hp
bGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMSwg
NDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpLmlz
RW1wdHkoKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihjaGlsZCk7CisgICAgICAgIC8vIHxjaGlsZDJ8IHNob3VsZCBnZXQgbWVyZ2VkIHdp
dGggdGhlIHN1cmZhY2Ugd2UgYXJlIGxlYXZpbmcgbm93CisgICAgICAgIG9jY2x1c2lvbi5maW5p
c2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEwLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworCisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA2MCwgMTAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDI5LCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA2MCwgMTAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDMxLCA2MCwgMTApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkuaXNF
bXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDEwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA2
MCwgMTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA2MCwgMSks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwg
NjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMSwgMTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzAs
IDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKS5pc0VtcHR5KCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIC8vIFRoaXMg
cmVjdCBpcyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoOTAsIDM5LCAxMCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgICAgICAvLyBUaGlzIHJl
Y3QgZXh0ZW5kcyBwYXN0IHRvcC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgorICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIC8v
IFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgbGVmdC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgorICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAsIDM5LCA4MCwgNjApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkp
OworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJv
bSB8bGF5ZXJ8OgorICAgICAgICAgICAgICAgICAgIDEwMAorICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMw
ICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLworICAgICAgICAgIHwgICAgMzAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAz
MCAgIDYwICAgICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKKyAgICAgICAgICB8IDMwICsgLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgMzAg
Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIDEwMCB8ICAgIHwgIDEw
ICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgID09PiAgICAgfCAgICAg
fFxcXFxcXFxcXFxcXHwgIHwxMCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgIHwxMCst
LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0t
fFxcXFxcXFxcXFxcXHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICB8ICAgICsgLS0t
LS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAg
Ky0tLS0tLS0tLS0tLSsvL3wgICAgIDQyMCAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAg
fC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAg
fC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICArLS0tLXwtLXwt
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0t
fC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEw
fCAgICAgNzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwxMHwKKyAgICAgICAgICAgICAgICstLXwt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTAwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCks
IHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CitBTExf
Q0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0
VHdvVGltZXMpOwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wg
b3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VSb3RhdGVk
T2ZmQXhpcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVy
U3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVk
OgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUw
LCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTUpOworICAgICAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgxMCwgMTApOworCisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQg
PSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBh
cmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgTGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMt
PmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIoY2hpbGQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUw
MCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJl
bGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKKworICAgICAgICBJbnRSZWN0IGNsaXBwZWRMYXllckluQ2hpbGQgPSBsYXll
clRyYW5zZm9ybS5tYXBSZWN0KGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkpOworCisgICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoY2xpcHBlZExheWVySW5DaGlsZCwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVy
SW5DaGlsZC5tb3ZlKC0xLCAwKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllckluQ2hp
bGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsK
KyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDEsIDApOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVy
SW5DaGlsZC5tb3ZlKC0xLCAwKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAs
IC0xKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgY2xp
cHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7
CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKKyAgICAgICAgY2xpcHBl
ZExheWVySW5DaGlsZC5tb3ZlKDAsIDEpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVy
SW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAs
IC0xKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQp
OworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBj
aGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91
bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCg3NSwgNTUsIDEsIDEpKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNzUsIDU1LCAxLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOworICAgIH0KK307CiAKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworQUxM
X0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90
YXRlZE9mZkF4aXMpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29u
dGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbiA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUs
IG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7
CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBj
aGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9y
bS5yb3RhdGUoOTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1
MCk7CisKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMt
PmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0g
b3duUGFyZW50LmdldCgpOworICAgICAgICBMYXllclR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRl
TGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAg
ICAgICBDb250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIo
Y2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3
RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7CisKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIElu
dFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAs
IDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQy
OSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEs
IDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMSwg
NDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwg
NjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzEsIDYwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGQpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJm
YWNlKGNoaWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDM5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKKworICAgICAg
ICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyMXwg
YW5kIHxsYXllcjJ8OgorCisgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXll
cjF8OiAvLy8vLworICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICBWaXNpYmxl
IHJlZ2lvbiBvZiB8bGF5ZXIyfDogXFxcXFwKKyAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgICAg
IHwxMCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAg
IDQyMCAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3w2MCAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAgICAgICAg
ICAgIHwgIHwKKyAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLXwtLSsgICAgICAgICAgICAg
IHwgIHwKKyAgICAgICAgICAgIDIwfDEwfCAgICAgNzAgICAgIHwgICAgICAgICAgICAgICAgIHwg
IHwKKyAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwK
KyAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAg
ICAgICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAg
ICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAg
ICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAg
ICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwxMHwKKyAgICAgICAgICAgICAg
fCAgKy0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgIHwgNDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgIDYwICAgICAg
ICAgICAgICAgNDQwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3Vy
ZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKK3RlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVu
YW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzIDogcHVibGljIENDT2NjbHVz
aW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVy
VHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQor
ICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAg
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJh
bnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUw
LCAtMjUwKTsKKworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0g
dGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJl
bnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+
Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQyID0gdGhpcy0+Y3Jl
YXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIElu
dFNpemUoMTAsIDEwKSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDEsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBsYXllcjIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQyLCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTAp
LCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgp
KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAs
IDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyMik7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwg
MzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwg
NDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwg
NzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
MiwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAs
IDQyMCwgNzAsIDgxKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lz
c29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQx
OSwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAw
MCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihj
aGlsZDIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkMiwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7CisK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50
UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTEsIDQzMCwgODAsIDcwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQyOSwg
ODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
MSwgSW50UmVjdCgtMTAsIDQzMCwgODEsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOworCisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDEpOworICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMSwgY2hpbGQxLT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkpKTsK
KworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDMwLCAyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDE5LCA3MCwgODApKSk7
CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgyMCwgMzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMTksIDMwLCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAyOSwgODAsIDcwKSkp
OworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246Cisg
ICAgICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
KyAgICAgICAgICB8ICAgIDIwICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKKyAgICAgICAg
ICB8ICAzMCsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgMTAwIHwg
IDMwfCAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgICAgICB8CisgICAgICAgICAgfDIwKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICB8ICB8IHwgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgIHwgIHwgfCAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgfCAgfCB8ICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICArLS18LXwtLS0tLS0tLS0tLS0tLS0t
KyAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8IDUxMAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwK
KyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAg
ICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCisgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDUxMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKK0FMTF9D
Q09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdT
dXJmYWNlU2libGluZ3MpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5
KCkpOwotfQordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJm
YWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+Citj
bGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRo
VHdvVHJhbnNmb3JtcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNoaWxkMVRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGQxVHJhbnNmb3JtLnRyYW5z
bGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkMVRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKKyAg
ICAgICAgY2hpbGQxVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDJUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkMlRyYW5z
Zm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGlsZDJUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKKyAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKwor
ICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJl
bnQuZ2V0KCk7CisgICAgICAgIExheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+Y3JlYXRlU3VyZmFj
ZShwYXJlbnQsIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEw
LCAxMCkpOworICAgICAgICBMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMtPmNyZWF0ZVN1cmZhY2Uo
cGFyZW50LCBjaGlsZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwg
MTApKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIxID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ0xheWVyKGNoaWxkMSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAt
MjApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUq
IGxheWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOwor
ICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMzAsIC0zMCwgMTAwMCwgMTAwMCkpOwor
CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIyKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0
KC0xMCwgNDE5LCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwg
ODEpKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
Mik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQy
LCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxKTsKKworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
IAotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
c2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZSwgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3Vs
bGVkVGlsZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEs
IEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDE5LCAtMjAsIDgwLCA5MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDIwLCAt
MjEsIDgwLCA5MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDEsIEludFJlY3QoNDIwLCAtMTksIDgwLCA5MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoNDIxLCAtMjAsIDgwLCA5MCkpKTsK
IAotdm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVy
cykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRM
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwot
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQo
cGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVy
T3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVy
YXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1
bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+
c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJl
bnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3Qs
IGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7Ci0KLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAy
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgMTAwKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywg
bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JS
ZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVu
ZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwot
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwot
ICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxz
ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAs
IDIwMCwgMjAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIw
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwg
NTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotfQotCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3Jl
ZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRp
YWxUaWxlcyk7Ci0KLXZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVl
TGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBh
cmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQo
KSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRD
aGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBG
aWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5k
KEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRl
ck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmls
dGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Owot
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVy
TGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
LQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAy
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MjAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5
KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5U
RURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1Rp
bGVzLCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JS
ZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBw
YXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9w
YXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwot
Ci0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQo
KSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQot
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEw
MCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAw
LCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkp
LmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotfQotCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3Jl
ZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsK
LQotdm9pZCBsYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4oYm9vbCBvcGFxdWVMYXll
cnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50
TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQo
KSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxk
KHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMSk7CisgICAgICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0g
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0g
ICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwg
ODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg5LCAyMCwgOTAsIDgwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMCwg
MTksIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMTEsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAyMSwgOTAsIDgwKSkpOworCisg
ICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246CisgICAgICAg
ICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwor
ICAgICAgICAgICAgfDIwICAgICAgICAgICAgICAgICAgIHwgICAgICAgbGF5ZXIxCisgICAgICAg
ICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIDEwMCB8
fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8CisgICAgICAgICAgICB8MjArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgIHx8IHwgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgfHwgfCAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8ICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICt8LXwtLS0tLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCB8IDUxMAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1MTAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgNTIwICAgICAgICAgICAgIHwgfAorICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUxMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwor
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1zKTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSA9IDUxMjsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUg
UmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVl
TGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnMgOiBwdWJsaWMgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50
TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVz
dCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsK
KyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgbGF5
ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRS
ZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBh
cmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5k
cygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAg
ICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3Qo
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
LCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50Lmdl
dCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBibHVyTGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIG9wYWNp
dHlMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAg
Q29udGVudExheWVyVHlwZSogb3BhcXVlTGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIo
cGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxh
eWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJP
cGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMTAsIFdlYkNvcmU6OlBlcmNlbnQpLCBGaWx0ZXJPcGVy
YXRpb246OkJMVVIpKTsKKyAgICAgICAgYmx1ckxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwog
Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmNsZWFyKCk7CisgICAgICAg
IGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAg
ICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAg
IGZpbHRlcnMub3BlcmF0aW9ucygpLmNsZWFyKCk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9u
cygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
MC41LCBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFkpKTsKKyAgICAgICAgb3BhY2l0eUxheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgLy8gVGhpcyBsYXllciBpcyB0cmFuc2xhdGVkIHdo
ZW4gZHJhd24gaW50byBpdHMgdGFyZ2V0LiBTbyBpZiB0aGUgc2Npc3NvciByZWN0IGdpdmVuIGZy
b20gdGhlIHRhcmdldCBzdXJmYWNlCi0gICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNl
LCB0aGVuIGFmdGVyIHRyYW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdl
dCwgdGhleSB3aWxsIGZhbGwgb3V0c2lkZQotICAgIC8vIHRoZSBzY2lzc29yIGFuZCBiZSBjb25z
aWRlcmVkIG9jY2x1ZGVkLgotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLX0KKyAgICAg
ICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotVEVTVF9PUEFR
VUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29y
UmVjdEZvckxheWVyT2ZmT3JpZ2luLCBsYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4p
OworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwogCi12b2lkIGRhbWFnZVJlY3RPdmVyVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIp
OwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICAvLyBPcGFjaXR5IGxheWVy
IHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgorICAgICAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYWNpdHlMYXllcik7CisgICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLCBv
cGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZp
bHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXIt
PnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsK
KyAgICAgICAgLy8gQW5kIGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBz
dXJmYWNlLgorICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgICAgICAvLyBPcGFxdWUgbGF5ZXIgd2lsbCBj
b250cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYXF1ZUxheWVyKTsKKyAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFxdWVMYXllciwgb3BhcXVlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVt
bXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8g
dGhlIHBhcmVudCBzdXJmYWNlLgorICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgLy8gVGhlIGJs
dXIgbGF5ZXIgbmVlZHMgdG8gdGhyb3cgYXdheSBhbnkgb2NjbHVzaW9uIGZyb20gb3V0c2lkZSBp
dHMgc3VidHJlZS4KKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShi
bHVyTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CisKKyAg
ICAgICAgLy8gQW5kIGl0IHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgorICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoYmx1ckxheWVyKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIsIGJsdXJMYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKKworICAgICAgICAvLyBC
dXQgdGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVu
dC4KKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgIH0KK307CiAKLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRh
bWFnZShGbG9hdFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CitB
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnMp
OwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVy
U3VyZmFjZSgpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVy
U3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJz
PgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hp
bGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlw
ZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250ZW50
TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXll
clR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUp
OworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2Nj
bHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsK
KworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAw
KSkpOworICAgIH0KK307CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKK0FMTF9DQ09DQ0xV
U0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91
dHNpZGVDaGlsZCk7CiAKLSAgICAvLyBPdXRzaWRlIHRoZSBsYXllcidzIGNsaXAgcmVjdC4KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFt
ZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RP
dXRzaWRlQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29udGVu
dExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAg
ICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENv
bnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50
LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNl
KCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwor
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3Qo
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAy
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CitBTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0
T3V0c2lkZUNoaWxkKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRM
YXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXll
cnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBP
d25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRy
dWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBh
cmVudC5yZWxlYXNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVudDxS
ZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwog
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKLX0KKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVF
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJUaWxlLCBkYW1hZ2VSZWN0T3Zl
clRpbGUpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpLmlzRW1wdHkoKSk7CiAKLXZvaWQg
ZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0g
ICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBGaWx0ZXJPcGVyYXRp
b25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6
R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAg
bGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKIAotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwor
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VS
ZWN0T3V0c2lkZUNoaWxkKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKK3Rl
bXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5
cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5
ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgp
CisgICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhp
cy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQg
PSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJh
d0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKworICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICBwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKIAotICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFj
ZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xh
c3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZSwg
Q29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IG93blBh
cmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgQ29udGVudExheWVyVHlw
ZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBs
YXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAg
ICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKKworICAgICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi0g
ICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
OwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCksICZkYW1hZ2UpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCk7CiAKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwordGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlw
ZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUs
IG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7
CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVh
dGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBh
cmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBh
cmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9h
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChs
YXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci19CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi1URVNUX09QQVFVRV9B
TkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlckN1
bGxlZFRpbGUsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdmVyQ2hpbGQpOwogCi12
b2lkIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXll
cik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCkpOwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwotCi0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIGRhbWFnZVJlY3RP
dmVyUGFydGlhbFRpbGVzKTsKLQotdm9pZCBkYW1hZ2VSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFx
dWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4g
cGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFk
ZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJm
YWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFt
YWdlKEZsb2F0UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKLQot
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyTm9U
aWxlcywgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKTsKLQotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVy
VHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5
ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1
ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAg
ICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5n
ZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwg
b3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIp
OworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAsIDIw
MCwgMTAwLCAxMDApKSk7CisgICAgfQorfTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVy
czsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUp
KTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNL
RVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJD
aGlsZCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0
eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENv
bnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVu
TXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJl
bnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAg
IGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAz
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAs
IDEwMCwgMzAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAx
MDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorfTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQpOwog
Ci0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXll
clR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdERh
bWFnZVJlY3RQYXJ0bHlPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXll
cnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBP
d25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRy
dWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7
CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBh
cmVudC5yZWxlYXNlKCkpOwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVt
bXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICBUZXN0RGFtYWdlQ2xp
ZW50PFJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDUwLCA1MCwgMjAwLCAyMDAp
KTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2Up
OwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
bGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDUwLCA1MCwgMTUwLCAxNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkpOwogCi0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgLy8gT2NjbHVkZWQgc2luY2UgaXRzIG91dHNp
ZGUgdGhlIHN1cmZhY2UgYm91bmRzLgotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0K
K307CiAKLSAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNjaXNzb3JzLgotICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSkpOwotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgp
OworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1h
Z2VSZWN0UGFydGx5T3ZlckNoaWxkKTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVy
VHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXllclR5
cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVy
U2Npc3NvclJlY3RPdmVyTm90aGluZyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIE93
blB0cjxDb250ZW50TGF5ZXJUeXBlPiBvd25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1
ZSk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsK
KyAgICAgICAgQ29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3Vy
ZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFy
ZW50LnJlbGVhc2UoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUw
MCwgNTAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAw
KSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9F
USgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci19CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExh
eWVyU2Npc3NvclJlY3RPdmVyTm90aGluZyk7CiAKLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dCwgb3BhcXVlQ29udGVudHNSZWdpb25Ob25FbXB0eSkKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGUsIHR5cGVuYW1lIENvbnRlbnRMYXll
clR5cGUsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNj
cmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0
KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93
blBhcmVudC5yZWxlYXNlKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDUwMCwgNTAw
LCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Cisg
ICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAs
IDEwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgy
MDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBl
LCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwg
Ym9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJOb3RoaW5nIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZSwgQ29udGVudExheWVyVHlwZSwgb3BhcXVlTGF5ZXJzPiB7Citwcm90
ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgT3duUHRyPENvbnRl
bnRMYXllclR5cGU+IG93blBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAg
ICAgQ29udGVudExheWVyVHlwZSogcGFyZW50ID0gb3duUGFyZW50LmdldCgpOworICAgICAgICBD
b250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVu
dCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAy
MDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50LCBvd25QYXJlbnQucmVsZWFz
ZSgpKTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgICAgIFRlc3RE
YW1hZ2VDbGllbnQ8UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAwLCA1MDAs
IDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
LCAmZGFtYWdlKTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIHsKLSAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkuaXNFbXB0eSgpKTsKIAotICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
KTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1w
dHkoKSk7CisgICAgfQorfTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworQUxMX0NDT0ND
TFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3Zlck5v
dGhpbmcpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1
cmZhY2VUeXBlLCB0eXBlbmFtZSBDb250ZW50TGF5ZXJUeXBlLCBib29sIG9wYXF1ZUxheWVycz4K
K2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZP
cmlnaW4gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlLCBDb250ZW50TGF5ZXJUeXBlLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBPd25QdHI8Q29udGVudExheWVy
VHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICBDb250
ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQuZ2V0KCk7CisgICAgICAgIENvbnRlbnRM
YXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQsIG93blBhcmVudC5yZWxlYXNlKCkpOwor
CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKKworICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRv
IGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0
IHN1cmZhY2UKKyAgICAgICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFm
dGVyIHRyYW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3
aWxsIGZhbGwgb3V0c2lkZQorICAgICAgICAvLyB0aGUgc2Npc3NvciBhbmQgYmUgY29uc2lkZXJl
ZCBvY2NsdWRlZC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgIH0KK307CiAKK0FMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dEZvckxheWVyT2ZmT3JpZ2luKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29udGVudExheWVyVHlwZSwgYm9vbCBv
cGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNS
ZWdpb25FbXB0eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUsIG9wYXF1ZUxheWVycz4geworcHJvdGVj
dGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBs
YXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOworICAg
ICAgICBPd25QdHI8Q29udGVudExheWVyVHlwZT4gb3duUGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMw
MCksIHRydWUpOworICAgICAgICBDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSBvd25QYXJlbnQu
Z2V0KCk7CisgICAgICAgIENvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50
LCBvd25QYXJlbnQucmVsZWFzZSgpKTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTIwLCAxMjAsIDE4MCwgMTgwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKworICAgICAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUg
c3VyZmFjZSBib3VuZHMuCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgLy8gVGVzdCB3
aXRob3V0IGFueSBzY2lzc29ycy4KKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwog
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKICAgICB9Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZSwgdHlwZW5hbWUgQ29u
dGVudExheWVyVHlwZSwgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25Ob25FbXB0eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGUsIENvbnRlbnRMYXllclR5cGUs
IG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7
Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwotICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3Qo
MTUwLCAxNTAsIDEwMCwgMTAwKSk7CisgICAgICAgIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBv
d25QYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIENvbnRlbnRMYXll
clR5cGUqIHBhcmVudCA9IG93blBhcmVudC5nZXQoKTsKKyAgICAgICAgQ29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxzZSk7
CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCwgb3duUGFyZW50LnJlbGVhc2UoKSk7CiAKLSAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
ci5nZXQoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjUwLCAyNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
KworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgbGF5
ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKKwor
ICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwg
MTIwLCAxODAsIDE4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIGxheWVy
LT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgxNTAsIDE1MCwgMTAwLCAxMDApKTsKKwor
ICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI1MCwg
MjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IH0KICAgICB9Ci19Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KTsKIAogfSAvLyBuYW1lc3Bh
Y2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131100</attachid>
            <date>2012-03-09 13:54:30 -0800</date>
            <delta_ts>2012-03-10 11:14:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120309165428.patch</filename>
            <type>text/plain</type>
            <size>226042</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlNjMyYTNiNWUwYzE2YzZjNDhmYTk2NDQwZWQwZTMwZmNhY2EwODQuLmZiNGY3YWJiYjYwOTA4
MWE4NTg3ZTVmOGVhNGE0OWMxODRmNzAzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMTItMDMtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3RzIGFuZCB0
ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hyb21pdW06OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVyQ2hy
b21pdW06Om9wYXF1ZUNvbnRlbnRzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250
ZW50TGF5ZXJDaHJvbWl1bTo6c2V0T3BhcXVlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFRlc3RD
b250ZW50TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChUZXN0Q29udGVudExheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVySW1wbDo6VGVzdENvbnRlbnRMYXllcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckltcGw6Om9wYXF1ZUNvbnRl
bnRzUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpzZXRP
cGFxdWVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6Om9jY2x1c2lv
bkluU2NyZWVuU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U6Om9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJC
YXNlOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3REYW1hZ2VDbGllbnQ6OmRhbWFnZVJlY3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdE1haW5UaHJlYWRUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRy
YWNrZXJUZXN0TWFpblRocmVhZFR5cGVzOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TWFpblRocmVhZFR5cGVzOjpjcmVhdGVDb250ZW50TGF5
ZXIpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzOjpj
cmVhdGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1w
bFRocmVhZFR5cGVzOjpjcmVhdGVDb250ZW50TGF5ZXIpOgorICAgICAgICAoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpU
ZWFyRG93bik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVh
dGVSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNyZWF0
ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNyZWF0
ZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3Jl
YXRlRHJhd2luZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3Q6OmNyZWF0ZURyYXdpbmdTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9u
VHJhY2tlclRlc3Q6OmNhbGNEcmF3RXRjKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9u
VHJhY2tlclRlc3Q6OnNldEJhc2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3Q6OnNldFByb3BlcnRpZXMpOgorICAgICAgICAoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1
c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zOjpydW5NeVRlc3QpOgorICAgICAgICAo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0Um90YXRlZENoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkOjpydW5NeVRlc3QpOgorICAg
ICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3RhdGVkQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3RhdGVkQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29U
aW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJn
ZXRUd29UaW1lczo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RT
dXJmYWNlUm90YXRlZE9mZkF4aXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdFN1cmZhY2VSb3RhdGVkT2ZmQXhpczo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxk
cmVuOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBw
aW5nU3VyZmFjZVNpYmxpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tl
clRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nczo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFu
c2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1zOjpydW5NeVRlc3QpOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1
c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVDaGls
ZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lz
c29yUmVjdE91dHNpZGVDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAg
IChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91dHNpZGVDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91dHNpZGVDaGlsZDo6
cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JS
ZWN0T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RM
YXllclNjaXNzb3JSZWN0T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVu
TXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3ZlckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0
T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExh
eWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQ6OnJ1bk15VGVz
dCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0
bHlPdmVyQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNj
cmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RQYXJ0bHlPdmVyQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RQYXJ0bHlPdmVyQ2hpbGQ6
OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29y
UmVjdE92ZXJOb3RoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3RMYXllclNjaXNzb3JSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyTm90aGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyTm90
aGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VS
ZWN0T3Zlck5vdGhpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dERhbWFnZVJlY3RPdmVyTm90aGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4pOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXllck9m
Zk9yaWdpbjo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFx
dWVDb250ZW50c1JlZ2lvbkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5OjpydW5NeVRlc3QpOgorICAgICAgICAo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9u
Tm9uRW1wdHk6OnJ1bk15VGVzdCk6CisKIDIwMTItMDMtMDggIEphbWVzIFJvYmluc29uICA8amFt
ZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEV4cG9zZSB0aGUgc2hhcmVk
IGdyYXBoaWNzIGNvbnRleHQgb24gV2ViVmlldyBzbyBjYWxsZXJzIGNhbiBhbGxvY2F0ZSByZXNv
dXJjZXMgb24gdGhlIG1haW4gdGhyZWFkIGZvciB0aGUgY29tcG9zaXRvciB0byB1c2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRl
c3QuY3BwCmluZGV4IDI2ZDUyNTIzYmUxMzRjMmVmYzk3OGIzNGEwYmQ0YzMzMjA1MDljYWMuLjBl
NTA3OTI1M2NiYjg5YTcwYWQxNTUzNWJiZmU4MjNjNmE4MDY2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApA
QCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJS
ZWdpb24uaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCisj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogCiAjaW5jbHVkZSA8Z21vY2svZ21v
Y2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgpAQCAtNDUsODQgKzQ3LDY2IEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCi1jbGFzcyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKK2NsYXNzIFRl
c3RDb250ZW50TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1YmxpYzoK
LSAgICBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpCi0gICAgICAgIDogTGF5
ZXJDaHJvbWl1bSgpCi0gICAgewotICAgIH0KKyAgICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0o
KSA6IExheWVyQ2hyb21pdW0oKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVu
dHNSZWdpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVyc2VjdGlvbihtX29w
YXF1ZVBhaW50UmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dE9wYXF1ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFx
dWVQYWludFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFx
dWVDb250ZW50c1JlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZUNv
bnRlbnRzUmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsgfQorICAgIHZvaWQgc2V0T3BhcXVlQ29u
dGVudHNSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNv
bnRlbnRzUmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQogCiBwcml2YXRlOgotICAgIEludFJl
Y3QgbV9vcGFxdWVQYWludFJlY3Q7CisgICAgSW50UmVjdCBtX29wYXF1ZUNvbnRlbnRzUmVjdDsK
IH07CiAKLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtKiBs
YXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKLXsKLSAgICBsYXllci0+c2V0
VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50KDAsIDApKTsKLSAgICBsYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotICAgIGxheWVy
LT5zZXRCb3VuZHMoYm91bmRzKTsKLX0KLQotdm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KiBsYXllciwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUsIGJvb2wgb3BhcXVlTGF5ZXJzKQot
ewotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIsIHRyYW5zZm9ybSwgcG9z
aXRpb24sIGJvdW5kcyk7Ci0gICAgaWYgKG9wYXF1ZUxheWVycykKLSAgICAgICAgbGF5ZXItPnNl
dE9wYXF1ZShvcGFxdWUpOwotICAgIGVsc2UgewotICAgICAgICBsYXllci0+c2V0T3BhcXVlKGZh
bHNlKTsKLSAgICAgICAgaWYgKG9wYXF1ZSkKLSAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQ
YWludFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBib3VuZHMpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIH0KLX0K
K2NsYXNzIFRlc3RDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIENDTGF5ZXJJbXBsIHsKK3B1Ymxp
YzoKKyAgICBUZXN0Q29udGVudExheWVySW1wbChpbnQgaWQpIDogQ0NMYXllckltcGwoaWQpIHsg
c2V0RHJhd3NDb250ZW50KHRydWUpOyB9CisKKyAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250
ZW50c1JlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIGludGVyc2VjdGlvbihtX29wYXF1ZUNvbnRlbnRz
UmVjdCwgdmlzaWJsZUxheWVyUmVjdCgpKTsgfQorICAgIHZvaWQgc2V0T3BhcXVlQ29udGVudHNS
ZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZUNvbnRlbnRzUmVjdCkgeyBtX29wYXF1ZUNvbnRlbnRz
UmVjdCA9IG9wYXF1ZUNvbnRlbnRzUmVjdDsgfQorcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fb3Bh
cXVlQ29udGVudHNSZWN0OworfTsKIAogLy8gQSBzdWJjbGFzcyB0byBleHBvc2UgdGhlIHRvdGFs
IGN1cnJlbnQgb2NjbHVzaW9uLgotY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlciA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrZXIgewordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBl
bmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK2NsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT4gewogcHVibGljOgotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIoSW50UmVjdCBzY3Jl
ZW5TY2lzc29yUmVjdCkKLSAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXIoc2NyZWVuU2Npc3Nv
clJlY3QpCisgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY3JlZW5TY2lz
c29yUmVjdCkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+KHNjcmVlblNjaXNzb3JSZWN0KQogICAgICAgICAsIG1fb3ZlcnJpZGVM
YXllclNjaXNzb3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlckRhbWFnZUNsaWVudCogZGFtYWdlQ2xpZW50KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJh
Y2tlcihzY3JlZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQorICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlckRhbWFnZUNsaWVudEJhc2U8UmVuZGVyU3VyZmFjZVR5cGU+KiBkYW1hZ2VDbGllbnQp
CisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCwgZGFtYWdlQ2xpZW50KQogICAgICAgICAsIG1fb3Zl
cnJpZGVMYXllclNjaXNzb3JSZWN0KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBSZWdpb24g
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tl
cjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW47IH0KLSAgICBSZWdpb24gb2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyOjpt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25J
blNjcmVlblNwYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
clR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3Jl
ZW47IH0KKyAgICBSZWdpb24gb2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQ7IH0KIAotICAgIHZvaWQgc2V0T2NjbHVz
aW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBDQ09jY2x1c2lvblRyYWNr
ZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gcmVnaW9uOyB9Ci0gICAgdm9p
ZCBzZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsgQ0NP
Y2NsdXNpb25UcmFja2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lv
bjsgfQorICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBSZWdpb24mIHJl
Z2lvbikgeyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5
cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQorICAgIHZv
aWQgc2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVnaW9uOyB9CiAKICAgICB2b2lkIHNldExh
eWVyU2Npc3NvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lz
c29yUmVjdCA9IHRydWU7IG1fbGF5ZXJTY2lzc29yUmVjdCA9IHJlY3Q7fQogICAgIHZvaWQgdXNl
RGVmYXVsdExheWVyU2Npc3NvclJlY3QoKSB7IG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID0g
ZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JS
ZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IEND
T2NjbHVzaW9uVHJhY2tlcjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7
IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShj
b25zdCBMYXllclR5cGUqIGxheWVyKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlTGF5ZXJTY2lz
c29yUmVjdCA/IG1fbGF5ZXJTY2lzc29yUmVjdCA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZh
Y2UobGF5ZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX292ZXJyaWRlTGF5ZXJTY2lzc29y
UmVjdDsKICAgICBJbnRSZWN0IG1fbGF5ZXJTY2lzc29yUmVjdDsKIH07CiAKLWNsYXNzIFRlc3RE
YW1hZ2VDbGllbnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50IHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorY2xhc3MgVGVzdERhbWFnZUNsaWVu
dCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJlbmRlclN1cmZh
Y2VUeXBlPiB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIGludGVyZmFjZQotICAgIHZpcnR1YWwgRmxv
YXRSZWN0IGRhbWFnZVJlY3QoY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKikgY29uc3QgeyBy
ZXR1cm4gbV9kYW1hZ2VSZWN0OyB9CisgICAgdmlydHVhbCBGbG9hdFJlY3QgZGFtYWdlUmVjdChj
b25zdCBSZW5kZXJTdXJmYWNlVHlwZSopIGNvbnN0IHsgcmV0dXJuIG1fZGFtYWdlUmVjdDsgfQog
CiAgICAgLy8gVGVzdGluZyBzdHVmZgogICAgIFRlc3REYW1hZ2VDbGllbnQoY29uc3QgRmxvYXRS
ZWN0JiBkYW1hZ2VSZWN0KSA6IG1fZGFtYWdlUmVjdChkYW1hZ2VSZWN0KSB7IH0KQEAgLTEzMiwy
MDgxICsxMTYsMTU4OCBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7CiB9
OwogCi0jZGVmaW5lIFRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShGVUxMVEVTVE5BTUUs
IFNIT1JUVEVTVE5BTUUpIFwKLSAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlTGF5ZXIpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNI
T1JUVEVTVE5BTUUodHJ1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAotICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVQYWludFJlY3Qp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgU0hP
UlRURVNUTkFNRShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorc3RydWN0IENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMgeworICAgIHR5
cGVkZWYgTGF5ZXJDaHJvbWl1bSBMYXllclR5cGU7CisgICAgdHlwZWRlZiBSZW5kZXJTdXJmYWNl
Q2hyb21pdW0gUmVuZGVyU3VyZmFjZVR5cGU7CisgICAgdHlwZWRlZiBUZXN0Q29udGVudExheWVy
Q2hyb21pdW0gQ29udGVudExheWVyVHlwZTsKKyAgICB0eXBlZGVmIFJlZlB0cjxMYXllckNocm9t
aXVtPiBMYXllclB0clR5cGU7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
IFBhc3NMYXllclB0clR5cGU7CisgICAgdHlwZWRlZiBSZWZQdHI8Q29udGVudExheWVyVHlwZT4g
Q29udGVudExheWVyUHRyVHlwZTsKKyAgICB0eXBlZGVmIFBhc3NSZWZQdHI8Q29udGVudExheWVy
VHlwZT4gUGFzc0NvbnRlbnRMYXllclB0clR5cGU7CisKKyAgICBzdGF0aWMgUGFzc0xheWVyUHRy
VHlwZSBjcmVhdGVMYXllcigpIHsgcmV0dXJuIExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOyB9Cisg
ICAgc3RhdGljIFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlIGNyZWF0ZUNvbnRlbnRMYXllcigpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUeXBlKCkpOyB9Cit9OworCitzdHJ1Y3Qg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcyB7CisgICAgdHlwZWRlZiBDQ0xh
eWVySW1wbCBMYXllclR5cGU7CisgICAgdHlwZWRlZiBDQ1JlbmRlclN1cmZhY2UgUmVuZGVyU3Vy
ZmFjZVR5cGU7CisgICAgdHlwZWRlZiBUZXN0Q29udGVudExheWVySW1wbCBDb250ZW50TGF5ZXJU
eXBlOworICAgIHR5cGVkZWYgT3duUHRyPENDTGF5ZXJJbXBsPiBMYXllclB0clR5cGU7CisgICAg
dHlwZWRlZiBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBQYXNzTGF5ZXJQdHJUeXBlOworICAgIHR5
cGVkZWYgT3duUHRyPENvbnRlbnRMYXllclR5cGU+IENvbnRlbnRMYXllclB0clR5cGU7CisgICAg
dHlwZWRlZiBQYXNzT3duUHRyPENvbnRlbnRMYXllclR5cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJU
eXBlOworCisgICAgc3RhdGljIFBhc3NMYXllclB0clR5cGUgY3JlYXRlTGF5ZXIoKSB7IHJldHVy
biBDQ0xheWVySW1wbDo6Y3JlYXRlKG5leHRDQ0xheWVySW1wbElkKyspOyB9CisgICAgc3RhdGlj
IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlIGNyZWF0ZUNvbnRlbnRMYXllcigpIHsgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDb250ZW50TGF5ZXJUeXBlKG5leHRDQ0xheWVySW1wbElkKyspKTsgfQorICAg
IHN0YXRpYyBpbnQgbmV4dENDTGF5ZXJJbXBsSWQ7Cit9OworCitpbnQgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEltcGxUaHJlYWRUeXBlczo6bmV4dENDTGF5ZXJJbXBsSWQgPSAwOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIHZpcnR1
YWwgdm9pZCBydW5NeVRlc3QoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQor
ICAgIHsKKyAgICAgICAgbV9yb290LmNsZWFyKCk7CisgICAgICAgIG1fcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdENocm9taXVtLmNsZWFyKCk7CisgICAgICAgIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlz
dEltcGwuY2xlYXIoKTsKICAgICB9CiAKLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24o
Ym9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzAp
KSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDI5LCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDI5LCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMjksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAwLCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMxLCA3MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzEsIDcwLCA3
MCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbihi
b29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRy
YW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAg
IGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVt
bXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIuZ2V0KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwg
NzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0KLSAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3MCwg
NzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwg
MSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAy
OSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjksIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMjksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMTAwLCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMxLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzEsIDcwLCA3MCkpKTsKLX0KLQot
VEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5
ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24sIGxheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uV2l0aFJvdGF0aW9uKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhUcmFuc2xhdGlvbihib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRo
YXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJT
dXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUo
MjAsIDIwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNm
b3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVM
YXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5
ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50
LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
LmdldCgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUw
LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDUxLCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotCi0gICAgb2NjbHVz
aW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg0
OSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNTAsIDUxLCA1MCwgNTApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTAsIDUwLCA1
MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAsIDEsIDUw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
NDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNDksIDUw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5
LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEs
IDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCg1MSwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwMCwgNTAsIDEsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg1MSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoNTAsIDEwMCwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDUxLCA1MCwgNTApKSk7Ci0KLSAgICBvY2Ns
dXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTAs
IDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAs
IDEsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoNDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwg
NDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
NTAsIDQ5LCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNTEsIDQ5LCA0OSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MCwg
NTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTEsIDUwLCA1MCkpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUxLCAxLCA0OSksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOwotICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbiwgbGF5ZXJBZGRl
ZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pOwotCi12b2lkIGxheWVyQWRkZWRUb09j
Y2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRTdXJmYWNlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAg
IC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4K
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxk
KTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUw
KTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgx
MDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCks
IGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0
LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotCi0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVj
dCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYxLCA3
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJ
bnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5
ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYxLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkp
OwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdl
dCgpLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwg
NDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgzMCwgNDEsIDcwLCA2MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lz
c29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAs
IDM5LCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOwot
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwotCi0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZy
b20gfGxheWVyfDoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSBy
ZWdpb24gb2YgfGxheWVyfDogLy8vLy8KLSAgICAgIHwgICAgMzAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
fAotICAgICAgfCAzMCArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0g
IDEwMCB8ICAgIHwgIDEwICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ID09PiAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAgICAgICAgIHwKLSAgICAg
IHwgICAgfDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAg
ICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgfAotICAgICAgfCAg
ICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
IHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICA0MjAgICAgICB8ICB8Ci0gICAgICB8ICAgIHwg
IHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAg
fCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKLSAgICAgIHwgICAgfCAgfCAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8
Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAgKy0tLS18LS18LS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICstLXwtLXwtLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEwfCAgICAgNzAg
ICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgfDUwMCAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwx
MHwKLSAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwgICAg
ICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tKwot
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAgICAgICB8Ci0gICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MDAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoUm90YXRlZFN1cmZhY2UsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRT
dXJmYWNlKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhTdXJmYWNlQWxy
ZWFkeU9uU3RhY2soYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0
IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBw
YXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkMiA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNoaWxkLT5hZGRDaGls
ZChsYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOwotCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRl
KDI1MCwgMjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAw
LCA1MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1
ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIC8vIHxjaGlsZDJ8IG1ha2VzIHxwYXJlbnR8J3Mgc3Vy
ZmFjZSBnZXQgY29uc2lkZXJlZCBieSBDQ09jY2x1c2lvblRyYWNrZXIgZmlyc3QsIGluc3RlYWQg
b2YgfGNoaWxkfCdzLiBUaGlzIGV4ZXJjaXNlcyBkaWZmZXJlbnQgY29kZSBpbgotICAgIC8vIGxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlLCBhcyB0aGUgdGFyZ2V0IHN1cmZhY2UgaGFzIGFscmVh
ZHkgYmVlbiBzZWVuLgotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDYwLCAyMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlz
dDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBk
dW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7
Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQy
LmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQot
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgp
KTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQz
MCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQu
Z2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgx
MSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAs
IDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MzEsIDYwLCA3MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkp
LmlzRW1wdHkoKSk7Ci0gICAgLy8gVGhpcyBpcyB0aGUgbGl0dGxlIHBpZWNlIG5vdCBvY2NsdWRl
ZCBieSBjaGlsZDIKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgMTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQz
MCwgNjAsIDcwKSkpOwotICAgIC8vIFRoaXMgZXh0ZW5kcyBwYXN0IGJvdGggc2lkZXMgb2YgY2hp
bGQyLCBzbyBpdCB3aWxsIGJlIHRoZSBvcmlnaW5hbCByZWN0LgotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoOSwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkpOwotICAgIC8vIFRoaXMgZXh0
ZW5kcyBwYXN0IHR3byBhZGphY2VudCBzaWRlcyBvZiBjaGlsZDIsIGFuZCBzaG91bGQgaW5jbHVk
ZWQgdGhlIHVub2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLgotICAgIC8vIFRoaXMgYWxzbyBk
ZW1vbnN0cmF0ZXMgdGhhdCB0aGUgcmVjdCBjYW4gYmUgYXJiaXRyYXJ5IGFuZCBkb2VzIG5vdCBn
ZXQgY2xpcHBlZCB0byB0aGUgbGF5ZXIncyB2aXNpYmxlTGF5ZXJSZWN0KCkuCi0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMjAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkpOwotICAg
IC8vIFRoaXMgZXh0ZW5kcyBwYXN0IHRocmVlIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgc28g
aXQgc2hvdWxkIGNvbnRhaW4gdGhlIHVub2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLiBUaGUg
bGVmdAotICAgIC8vIGFuZCBib3R0b20gZWRnZXMgYXJlIGNvbXBsZXRlbHkgdW5vY2NsdWRlZCBm
b3Igc29tZSByb3cvY29sdW1uIHNvIHdlIGdldCBiYWNrIHRoZSBvcmlnaW5hbCBxdWVyeSByZWN0
LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDYw
LCA4MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5
LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMwLCAxLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEs
IDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwgNjAs
IDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0
KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lz
c29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgp
LCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQz
MCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKS5p
c0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QoY2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEs
IDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkp
LmlzRW1wdHkoKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQuZ2V0KCkpOwotICAgIC8vIHxjaGlsZDJ8IHNob3VsZCBnZXQgbWVyZ2VkIHdpdGgg
dGhlIHN1cmZhY2Ugd2UgYXJlIGxlYXZpbmcgbm93Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFy
Z2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0g
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQot
ICAgIFZlY3RvcjxJbnRSZWN0PiBzY3JlZW4gPSBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCk7Ci0gICAgVmVjdG9yPEludFJlY3Q+IHRhcmdldCA9IG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEwLCAxMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjks
IDYwLCAxMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMSwgMzAsIDYwLCAxMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSkpOwotCi0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkp
KTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDYwLCAxMCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDYwLCAxMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpLmlzRW1wdHkoKSk7Ci0KLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGlzIG1v
c3RseSBvY2NsdWRlZCBieSB8Y2hpbGQyfC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkw
LCAzOSwgMTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKLSAgICAvLyBUaGlzIHJlY3QgZXh0ZW5kcyBw
YXN0IHRvcC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDI5LCA3MCwgMTEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICAvLyBUaGlzIHJlY3QgZXh0
ZW5kcyBwYXN0IGxlZnQvcmlnaHQgZW5kcyBvZiB8Y2hpbGQyfC4KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDM5LCA4MCwgNjApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLQotICAg
IC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXJ8Ogot
ICAgICAgICAgICAgICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5
ZXJ8OiAvLy8vLwotICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0
ZSg5MCkgICAgICAgICAgICAgICAgIHwgICAgIDMwICAgNjAgICAgICAgICB8ICAgIHxjaGlsZDJ8
OiBcXFxcXAotICAgICAgfCAzMCArIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsg
ICAgICAgICAgICAgICAgICAgIHwgIDMwICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi0gIDEwMCB8ICAgIHwgIDEwICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgID09PiAgICAgfCAgICAgfFxcXFxcXFxcXFxcXHwgIHwxMCAgICAgICAgICAgICAgIHwK
LSAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgICAgICB8ICArLS18XFxcXFxcXFxcXFxcfC0tLS0tLS0tLS0tLS0tLS0tKyAgfAotICAg
ICAgfCAgICArIC0tLS0tLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAg
ICAgICAgIHwgIHwgICstLS0tLS0tLS0tLS0rLy98ICAgICA0MjAgICAgICB8ICB8Ci0gICAgICB8
ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKLSAgICAgIHwgICAg
fCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8
ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAgKy0tLS18LS18
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICstLXwt
LXwtLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEwfCAg
ICAgNzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgfDUwMCAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwxMHwKLSAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
IHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
fC0tKwotICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAgICAgICB8Ci0g
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MDAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BB
SU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lv
bldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2spOwotCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJl
bnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsK
LSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgLy8gTm93IHJvdGF0ZSB0aGUgY2hp
bGQgYSBsaXR0bGUgbW9yZSBzbyBpdCBpcyBub3QgYXhpcy1hbGlnbmVkLiBUaGUgcGFyZW50IHdp
bGwgbm8gbG9uZ2VyIGJlIG9jY2x1ZGVkIGJ5IHxsYXllcnwsIGJ1dAotICAgIC8vIHRoZSBjaGls
ZCdzIG9jY2x1c2lvbiBzaG91bGQgYmUgdW5jaGFuZ2VkLgotCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwg
MjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTUpOwotICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVy
VHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOwotCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQo
MzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0g
ICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENv
bW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwg
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotCi0gICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5ZXJUcmFu
c2Zvcm0ubWFwUmVjdChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKTsKLQotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChjbGlwcGVkTGF5
ZXJJbkNoaWxkLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkp
OwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNo
aWxkKS5pc0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExh
eWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAg
ICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7Ci0gICAgY2xpcHBlZExheWVySW5DaGls
ZC5tb3ZlKDEsIDApOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQu
Z2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQp
LmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKLSAgICBj
bGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNs
aXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5t
b3ZlKDAsIDEpOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAxKTsKLSAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNo
aWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgIGNsaXBw
ZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwotICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDc1LCA1NSwgMSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkpKTsKLX0KLQotVEVTVF9PUEFR
VUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlLCBsYXllckFkZGVkVG9PY2Ns
dWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UpOwotCi12b2lkIGxheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzKGJvb2wgb3BhcXVlTGF5ZXJz
KQotewotICAgIC8vIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgdGVzdCBidXQgbm93
IHdlIG1ha2UgYSBmZXcgb3BhcXVlIGxheWVycyBpbnNpZGUgb2YgfGNoaWxkfCBzbyB0aGF0IHRo
ZSBvY2NsdWRlZCBwYXJ0cyBvZiBjaGlsZCBhcmUgbm90IGEgc2ltcGxlIHJlY3QuCi0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwotICAgIGNo
aWxkLT5hZGRDaGlsZChsYXllcjEpOwotICAgIGNoaWxkLT5hZGRDaGlsZChsYXllcjIpOwotCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwot
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxh
eWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1
MDAsIDQ0MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCA0NTAp
LCBJbnRTaXplKDUwMCwgNjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hpbGQtPnNl
dE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7
Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlw
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVI
b3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50Lmdl
dCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwot
Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcjIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcjEuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAs
IDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwot
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MjksIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsK
LQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQu
Z2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMTAsIDQyOSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkp
OwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsK
LSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBj
aGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcw
LCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAs
IDYwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwg
NjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVj
dCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzOSwg
NzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwg
NDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBm
b3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcjF8IGFuZCB8bGF5ZXIyfDoKLQotICAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8vLy8vCi0gICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIHwgICAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyMnw6IFxcXFxcCi0gICAg
ICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICB8ICAg
ICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAotICAgICAgIHwgICstLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rICB8Ci0gICAgICAgfCAgfCAgfFxcXFxcXFxcXFxc
XHwvL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfDYw
ICAgICAgICAgICAgfCAgfAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98ICAgICAgICAg
ICAgICB8ICB8Ci0gICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLXwtLSsgICAgICAgICAgICAgIHwg
IHwKLSAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAg
ICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAg
fCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfDEwfAotICAgICAgICAgIHwgICstLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18
LS0rCi0gICAgICAgICAgfCAgICAgICAgICAgICAgIHwgNDkwICAgICAgICAgICAgIHwKLSAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAg
IDYwICAgICAgICAgICAgICAgNDQwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlO
VEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVn
aW9uV2l0aE11bHRpcGxlT3BhcXVlTGF5ZXJzLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhNdWx0aXBsZU9wYXF1ZUxheWVycyk7Ci0KLXZvaWQgc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVy
bGFwcGluZ1NpYmxpbmdTdXJmYWNlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlz
IHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9w
dFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOwot
ICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQyKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVy
MSk7Ci0gICAgY2hpbGQyLT5hZGRDaGlsZChsYXllcjIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwg
MjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdl
dCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3Bh
cXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQo
KSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSg1MDAsIDUwMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7Ci0KLSAgICBjaGlsZDEtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0gICAgY2hp
bGQyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+
c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBh
cmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVT
aXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJl
Y3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyMCwgNDAsIDgwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCA0MjAsIDYwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0MjAsIDYwLCA4MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMSwgNDIwLCA2
MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0
KCksIEludFJlY3QoMCwgNDE5LCA2MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoMCwgNDIwLCA2MSwgODApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoMCwg
NDIwLCA2MCwgODEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
Y2hpbGQyLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkMi5nZXQoKSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5nZXQoKSk7
Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAsIDQzMCwg
NzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdl
dCgpLCBJbnRSZWN0KC0xLCA0MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgwLCA0MjksIDcwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgw
LCA0MzAsIDcxLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMS5nZXQoKSwgSW50UmVjdCgwLCA0MzAsIDcwLCA3MSkpKTsKLQotICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDEuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5p
c2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLmdldCgpLCBjaGlsZDEtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVD
VF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwg
MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDQwLCA4MCwgNjApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMTksIDQwLCA4MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDM5LCA4MCwgNjApKSk7Ci0KLSAgICAvKiBKdXN0
aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgotICAgICAgICAgICAgICAgMTAwCi0g
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwKLSAgICAgIHwgICAgMzAgICAgICAgICAgICAgICB8ICAgICAgIGNoaWxkMQotICAgICAgfCAg
MzArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHwgIDQwfCAgICAg
ICAgICAgICAgICB8ICAgICBjaGlsZDIgICAgICB8Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICB8IHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgfCB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAot
ICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUwMAotICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAg
ICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LSsKLSAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgNTAwCi0g
ICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMs
IHN1cmZhY2VPY2NsdXNpb25XaXRoT3ZlcmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMpOwotCi12b2lk
IHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAg
IC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4K
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
MSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNo
aWxkMSk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOwotICAgIGNoaWxkMS0+YWRkQ2hp
bGQobGF5ZXIxKTsKLSAgICBjaGlsZDItPmFkZENoaWxkKGxheWVyMik7Ci0KLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoMjUwLCAyNTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRU
cmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgLy8gVGhlIG93bmluZyBsYXll
cnMgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBib3VuZHMgZnJvbSB0aGUgc3VyZmFjZXMgdGhhdCB0aGV5
IG93bi4KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
LTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
LTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAg
IC8vIE1ha2UgdGhlbSBib3RoIHJlbmRlciBzdXJmYWNlcwotICAgIEZpbHRlck9wZXJhdGlvbnMg
ZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEUpKTsKLSAgICBjaGlsZDEtPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgY2hpbGQyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNl
KTsKLSAgICBjaGlsZDItPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1h
eFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENv
bnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQt
PmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsK
LQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1t
eU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIuZ2V0KCkpOwotCi0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIElu
dFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwg
NDIwLCA3MSwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKLQotICAgIG9jY2x1c2lvbi51
c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwg
NDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
Mi5nZXQoKSwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRS
ZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIuZ2V0KCksIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllcjEuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAs
IDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwot
ICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgODAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdl
dCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTExLCA0MzAsIDgwLCA3MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVj
dCgtMTAsIDQyOSwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA4MSwgNzApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAs
IDgwLCA3MSkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGls
ZDEuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQxLmdldCgpLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMTksIDcw
LCA4MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMjAsIDMwLCA4MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTksIDMwLCA4MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAs
IDI5LCA4MCwgNzApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2Nj
bHVzaW9uOgotICAgICAgICAgICAgICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotICAgICAgfCAgICAyMCAgICAgICAgICAgICAgIHwgICAgICAgbGF5ZXIxCi0gICAgICB8ICAz
MCsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgMzB8ICAgICAg
ICAgICAgICAgIHwgICAgIGxheWVyMiAgICAgIHwKLSAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgIHwgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICB8IHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0g
ICAgICArLS18LXwtLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwgfAotICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgNTEwCi0gICAgICAgICB8IHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtKwotICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICA1MTAKLSAg
ICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UsIHN1cmZhY2VPY2NsdXNpb25J
blNjcmVlblNwYWNlKTsKLQotdm9pZCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZl
cmVudFRyYW5zZm9ybXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0
aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKGNoaWxkMik7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChsYXllcjEpOwotICAg
IGNoaWxkMi0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNo
aWxkMVRyYW5zZm9ybTsKLSAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsK
LSAgICBjaGlsZDFUcmFuc2Zvcm0ucm90YXRlKC05MCk7Ci0gICAgY2hpbGQxVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkMlRy
YW5zZm9ybTsKLSAgICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBj
aGlsZDJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOwotCi0gICAgLy8gVGhlIG93bmluZyBsYXllcnMgaGF2ZSB2ZXJ5IGRpZmZl
cmVudCBib3VuZHMgZnJvbSB0aGUgc3VyZmFjZXMgdGhhdCB0aGV5IG93bi4KLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkMS5nZXQoKSwgY2hpbGQxVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAy
MCksIEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTIwKSwgSW50U2l6
ZSg1MTAsIDUyMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkMlRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwg
NDApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNp
emUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgLy8gTWFrZSB0aGVtIGJv
dGggcmVuZGVyIHN1cmZhY2VzCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIGNo
aWxkMS0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBjaGlsZDItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0KLSAgICBjaGlsZDEtPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwotICAgIGNoaWxkMi0+
c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgt
MzAsIC0zMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwg
NDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEsIDQyMCwg
NzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdl
dCgpLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVj
dCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGNoaWxkMi5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVy
U3VyZmFjZShjaGlsZDIuZ2V0KCksIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEu
Z2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0K
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0
KDQyMCwgLTIwLCA4MCwgOTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDE5LCAtMjAsIDgwLCA5MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjAsIC0yMSwg
ODAsIDkwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdl
dCgpLCBJbnRSZWN0KDQyMCwgLTE5LCA4MCwgOTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIxLCAtMjAsIDgwLCA5MCkpKTsK
LQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDEuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLmdldCgpLCBj
aGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAsIDIwLCA5MCwgODApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoOSwgMjAsIDkw
LCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgxMCwgMTksIDkwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMSwgMjAsIDkwLCA4MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMCwg
MjEsIDkwLCA4MCkpKTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2Ns
dXNpb246Ci0gICAgICAgICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci0gICAgICB8MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKLSAgICAgMTArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHx8IDMwICAgICAgICAgICAg
ICAgICB8ICAgICBsYXllcjIgIHwKLSAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8
Ci0gICAgICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKLSAgICAgIHx8
IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgK3wtfC0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgNTEwCi0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUxMCB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICA1
MjAgICAgICAgICAgICAgfCB8Ci0gICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAot
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgNTEwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVE
X09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25JblNjcmVlblNw
YWNlRGlmZmVyZW50VHJhbnNmb3Jtcywgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZm
ZXJlbnRUcmFuc2Zvcm1zKTsKLQotdm9pZCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJz
KGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQg
dHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBibHVyTGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBvcGFjaXR5TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50PiBvcGFxdWVMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZh
Y2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGJsdXJMYXllcik7Ci0gICAgcGFyZW50LT5hZGRD
aGlsZChvcGFjaXR5TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQob3BhcXVlTGF5ZXIpOwot
Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgbGF5ZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTAp
OwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoYmx1ckxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKG9wYXF1ZUxheWVyLmdldCgpLCBsYXllclRyYW5zZm9y
bSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVlTGF5
ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKG9wYWNpdHlMYXllci5nZXQo
KSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIGNyZWF0ZVJvb3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKKyAgICB7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJQdHJUeXBlIGxheWVyID0gVHlwZXM6
OmNyZWF0ZUNvbnRlbnRMYXllcigpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogbGF5ZXJQdHIgPSBsYXllci5nZXQoKTsKKyAgICAgICAgc2V0UHJvcGVydGllcyhs
YXllclB0ciwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKIAorICAgICAgICBBU1NFUlQo
IW1fcm9vdCk7CisgICAgICAgIG1fcm9vdCA9IGxheWVyLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0
dXJuIGxheWVyUHRyOworICAgIH0KKworICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNy
ZWF0ZUxheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IEludFNpemUmIGJvdW5kcykKICAgICB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmls
dGVyczsKLSAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgoMTAsIFdlYkNvcmU6OlBlcmNlbnQpLCBGaWx0ZXJPcGVyYXRp
b246OkJMVVIpKTsKLSAgICAgICAgYmx1ckxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJQdHJUeXBlIGxheWVyID0gVHlwZXM6OmNyZWF0ZUxh
eWVyKCk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGxheWVyUHRyID0gbGF5
ZXIuZ2V0KCk7CisgICAgICAgIHNldFByb3BlcnRpZXMobGF5ZXJQdHIsIHRyYW5zZm9ybSwgcG9z
aXRpb24sIGJvdW5kcyk7CisgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIucmVsZWFzZSgp
KTsKKyAgICAgICAgcmV0dXJuIGxheWVyUHRyOwogICAgIH0KIAorICAgIHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUqIGNyZWF0ZVN1cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFy
ZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXIgPSBjcmVhdGVMYXllcihwYXJlbnQsIHRyYW5z
Zm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVy
czsKICAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFKSk7Ci0gICAgICAgIG9wYXF1ZUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAg
ICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgcmV0dXJuIGxheWVyOwogICAg
IH0KIAorICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5n
TGF5ZXIodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKICAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJQdHJUeXBlIGxheWVyID0gVHlwZXM6OmNyZWF0ZUNvbnRlbnRMYXll
cigpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXJQdHIg
PSBsYXllci5nZXQoKTsKKyAgICAgICAgc2V0UHJvcGVydGllcyhsYXllclB0ciwgdHJhbnNmb3Jt
LCBwb3NpdGlvbiwgYm91bmRzKTsKKworICAgICAgICBpZiAob3BhcXVlTGF5ZXJzKQorICAgICAg
ICAgICAgbGF5ZXJQdHItPnNldE9wYXF1ZShvcGFxdWUpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGxheWVyUHRyLT5zZXRPcGFxdWUoZmFsc2UpOworICAgICAgICAgICAgaWYgKG9wYXF1
ZSkKKyAgICAgICAgICAgICAgICBsYXllclB0ci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgYm91bmRzKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbGF5ZXJQdHItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KCkpOworICAgICAgICB9
CisKKyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChsYXllci5yZWxlYXNlKCkpOworICAgICAgICBy
ZXR1cm4gbGF5ZXJQdHI7CisgICAgfQorCisgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGNyZWF0ZURyYXdpbmdTdXJmYWNlKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBh
cmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCisgICAg
eworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSBjcmVh
dGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMsIG9wYXF1
ZSk7CiAgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICAgICAgZmlsdGVycy5v
cGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOwotICAgICAgICBvcGFjaXR5
TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygp
LmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41
LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgICAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKKyAgICAgICAgcmV0dXJuIGxheWVyOwogICAgIH0KIAogCi0gICAgVmVjdG9y
PFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNl
dENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJl
bnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50
KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBk
dW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgLy8gT3BhY2l0eSBs
YXllciB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyLmdldCgpKTsKLSAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllci5nZXQo
KSwgb3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0g
ICAgLy8gQW5kIGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8gaXRzIHBhcmVudCBzdXJmYWNl
LgotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0gICAgLy8gT3BhcXVlIGxheWVyIHdpbGwg
Y29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5m
aW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIuZ2V0KCksIG9wYXF1ZUxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwot
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRlZCB0byB0aGUgcGFyZW50IHN1
cmZhY2UuCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0KLSAgICAvLyBUaGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBvY2Ns
dXNpb24gZnJvbSBvdXRzaWRlIGl0cyBzdWJ0cmVlLgotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UoYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgp
KTsKLQotICAgIC8vIEFuZCBpdCB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoYmx1ckxheWVyLmdldCgpKTsKLSAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci5nZXQoKSwgYmx1
ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgIC8vIEJ1dCB0
aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFyZW50Lgot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotfQot
Ci1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9v
Y2NsdXNpb25JbnRlcmFjdGlvbldpdGhGaWx0ZXJzLCBvY2NsdXNpb25JbnRlcmFjdGlvbldpdGhG
aWx0ZXJzKTsKLQotdm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlclRpbGUoYm9vbCBvcGFxdWVMYXll
cnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50
TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQo
KSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxk
KHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRl
ck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3Bl
cmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJz
KTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBk
dW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCkt
PnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMo
KSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFy
ZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0
LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXll
clNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BB
UVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlLCBsYXll
clNjaXNzb3JSZWN0T3ZlclRpbGUpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUo
Ym9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBw
YXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVy
KTsKKyAgICBUZXN0Q29udGVudExheWVySW1wbCogY2FsY0RyYXdFdGMoVGVzdENvbnRlbnRMYXll
ckltcGwqIHJvb3QpCisgICAgeworICAgICAgICBBU1NFUlQocm9vdCA9PSBtX3Jvb3QuZ2V0KCkp
OworICAgICAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBkdW1teUxheWVyTGlzdDsKKyAgICAgICAg
aW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisKKyAgICAgICAgQVNTRVJUKCFyb290LT5y
ZW5kZXJTdXJmYWNlKCkpOworICAgICAgICByb290LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Cisg
ICAgICAgIHJvb3QtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOworICAgICAgICByb290LT5zZXRDbGlwUmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7CisgICAgICAgIG1f
cmVuZGVyU3VyZmFjZUxheWVyTGlzdEltcGwuYXBwZW5kKG1fcm9vdC5nZXQoKSk7CisKKyAgICAg
ICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHkocm9vdCwgcm9vdCwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3JlbmRl
clN1cmZhY2VMYXllckxpc3RJbXBsLCBkdW1teUxheWVyTGlzdCwgMCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7CisgICAgICAgIHJldHVybiByb290OworICAgIH0KIAotICAgIEZpbHRlck9wZXJhdGlv
bnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBs
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICBUZXN0Q29udGVudExheWVyQ2hyb21pdW0q
IGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSogcm9vdCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChyb290ID09IG1fcm9vdC5nZXQoKSk7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKKyAgICAgICAgaW50IGR1bW15TWF4VGV4
dHVyZVNpemUgPSA1MTI7CisKKyAgICAgICAgQVNTRVJUKCFyb290LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICByb290LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIHJvb3QtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBy
b290LT5ib3VuZHMoKSkpOworICAgICAgICByb290LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7CisgICAgICAgIG1fcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdENocm9taXVtLmFwcGVuZChtX3Jvb3QpOworCisgICAgICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QsIHJvb3Qs
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
Q2hyb21pdW0sIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAg
cmV0dXJuIHJvb3Q7CisgICAgfQogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
LCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgy
MDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXggaWRlbnRpdHlNYXRyaXg7CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7
Citwcml2YXRlOgorICAgIHZvaWQgc2V0QmFzZVByb3BlcnRpZXModHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCisgICAgewor
ICAgICAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgICAgIGxheWVyLT5z
ZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgbGF5
ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBsYXllci0+c2V0
UG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICBsYXllci0+c2V0Qm91bmRzKGJvdW5kcyk7Cisg
ICAgfQogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0
Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICB2b2lkIHNldFBy
b3BlcnRpZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMpCisgICAgeworICAgICAgICBzZXRCYXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNmb3Jt
LCBwb3NpdGlvbiwgYm91bmRzKTsKKyAgICB9CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgdm9pZCBz
ZXRQcm9wZXJ0aWVzKENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUm
IGJvdW5kcykKKyAgICB7CisgICAgICAgIHNldEJhc2VQcm9wZXJ0aWVzKGxheWVyLCB0cmFuc2Zv
cm0sIHBvc2l0aW9uLCBib3VuZHMpOwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgbGF5ZXItPnNldENv
bnRlbnRCb3VuZHMobGF5ZXItPmJvdW5kcygpKTsKKyAgICB9CiAKLSAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgIC8vIFRo
ZXNlIGhvbGQgb3duZXJzaGlwIG9mIHRoZSBsYXllcnMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUg
dGVzdC4KKyAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJQdHJUeXBlIG1fcm9vdDsKKyAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Q2hyb21p
dW07CisgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1w
bDsKK307CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyNkZWZpbmUgUlVOX1RFU1RfTUFJ
Tl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUj
I01haW5UaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RNYWluVGhyZWFkVHlwZXMsIHRydWU+IHsgfTsgXAorICAgIFRFU1RfRihDbGFzc05h
bWUjI01haW5UaHJlYWRPcGFxdWVMYXllcnMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KKyNk
ZWZpbmUgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX1BBSU5UUyhDbGFzc05hbWUpIFwKKyAg
ICBjbGFzcyBDbGFzc05hbWUjI01haW5UaHJlYWRPcGFxdWVQYWludHMgOiBwdWJsaWMgQ2xhc3NO
YW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMsIGZhbHNlPiB7IH07IFwK
KyAgICBURVNUX0YoQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3BhcXVlUGFpbnRzLCBydW5UZXN0KSB7
IHJ1bk15VGVzdCgpOyB9CisKKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xB
WUVSUyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVM
YXllcnMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFk
VHlwZXMsIHRydWU+IHsgXAorICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsg
XAorICAgIH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlTGF5ZXJz
LCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFE
X09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBsVGhy
ZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNzTmFtZTxDQ09jY2x1c2lvblRyYWNrZXJUZXN0
SW1wbFRocmVhZFR5cGVzLCBmYWxzZT4geyBcCisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOyBcCisgICAgfTsgXAorICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxUaHJlYWRP
cGFxdWVQYWludHMsIHJ1blRlc3QpIHsgcnVuTXlUZXN0KCk7IH0KKworI2RlZmluZSBBTExfQ0NP
Q0NMVVNJT05UUkFDS0VSX1RFU1QoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJF
QURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9P
UEFRVUVfUEFJTlRTKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFV
RV9MQVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX1BB
SU5UUyhDbGFzc05hbWUpCisKKyNkZWZpbmUgTUFJTl9BTkRfSU1QTF9USFJFQURfVEVTVChDbGFz
c05hbWUpIFwKKyAgICBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFt
ZSkgXAorICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKQor
Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1zIDogcHVibGljIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVu
TXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBl
KiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1
MDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgIC8vIE9jY2x1
ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5kcy4KLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAvLyBUZXN0IHdp
dGhvdXQgYW55IHNjaXNzb3JzLgotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZh
dWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMjksIDcwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMxLCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMSwg
NzAsIDcwKSkpOworICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKK0FMTF9DQ09DQ0xV
U0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0SWRlbnRpdHlUcmFuc2Zvcm1z
KTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0Um90YXRlZENoaWxkIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVj
dGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUo
MjUwLCAyNTApOworICAgICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBs
YXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3
RXRjKHBhcmVudCk7CiAKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotfQorICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CiAKLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0
X3NjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclRpbGUpOwor
ICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworCisgICAgICAg
IG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MzAsIDMxLCA3MCwgNzApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEs
IDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjks
IDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5LCA3
MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgy
OSwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjks
IDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDI5
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgzMSwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAs
IDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMx
LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMzEsIDMxLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOworICAgIH0KK307CiAKLXZvaWQgbGF5ZXJTY2lz
c29yUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZCk7CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkIDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xh
dGUoMjAsIDIwKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Us
IG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIo
cGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2Ns
dXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAot
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRM
YXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1
MCwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDUwLCA1MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNTAsIDEsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDUxLCA1MCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNTEsIDUwLCA1MCkp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMTAwLCA1MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUxLCA1MCwg
NTApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAsIDEsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDQ5LCA0OSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCg1MSwgNTAsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUw
KSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgMSwgNDkpLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsK
KyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CisgICAgfQorfTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkKTsKIAotICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Citj
bGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJvdGF0ZWRDaGlsZCA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjaGlsZFRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwg
MjUwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgY2hpbGRU
cmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
KyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQgPSB0aGlzLT5jcmVhdGVM
YXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApKTsKKyAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAs
IDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJl
bnQpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6
UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
KyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIu
Z2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKIAotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MzAsIDYxLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5
LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYxLCA3MCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MSkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
OSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAs
IDQxLCA3MCwgNjApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisKKyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBm
b3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6CisgICAgICAgICAgICAgICAgICAg
MTAwCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8v
Ly8vCisgICAgICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0ZSg5
MCkgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgfCAz
MCArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAg
IHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAxMDAgfCAg
ICB8ICAxMCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAg
IHwgICAgIHwgICAgICAgICAgICAgICB8MTAgICAgICAgICAgICAgICB8CisgICAgICAgICAgfCAg
ICB8MTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAg
IHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICB8CisgICAgICAgICAgfCAg
ICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
IHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICA0MjAgICAgICB8ICB8CisgICAgICAgICAgfCAg
ICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
IHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgfCAg
ICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
IHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgKy0t
LS18LS18LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICstLXwtLXwtLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAyMHwxMHwgICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfDUwMCAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAgICAgICAg
ICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAgICAg
ICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKK0FM
TF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJv
dGF0ZWRDaGlsZCk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7
Ci19Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lcyA6IHB1YmxpYyBDQ09jY2x1c2lv
blRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lk
IHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRy
YW5zZm9ybTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAg
ICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGls
ZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAg
ICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hp
bGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAw
LCA1MDApLCB0cnVlKTsKKyAgICAgICAgLy8gfGNoaWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJm
YWNlIGdldCBjb25zaWRlcmVkIGJ5IENDT2NjbHVzaW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBv
ZiB8Y2hpbGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRpZmZlcmVudCBjb2RlIGluCisgICAgICAgIC8v
IGxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlLCBhcyB0aGUgdGFyZ2V0IHN1cmZhY2UgaGFzIGFs
cmVhZHkgYmVlbiBzZWVuLgorICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogY2hpbGQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg2MCwgMjApLCB0cnVlKTsKKyAg
ICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwg
MTAwMCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUsIGxheWVyU2Npc3NvclJlY3RP
dmVyQ3VsbGVkVGlsZSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyKTsKIAotdm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxs
ZWRUaWxlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChsYXllcik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwg
NDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50
UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3
MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTEsIDQz
MCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICAvLyBUaGlzIGlzIHRoZSBs
aXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVkIGJ5IGNoaWxkMgorICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDksIDQzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICAvLyBUaGlzIGV4dGVu
ZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgd2lsbCBiZSB0aGUgb3JpZ2luYWwg
cmVjdC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDYwLCA4MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwg
ODApKSk7CisgICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBwYXN0IHR3byBhZGphY2VudCBzaWRlcyBv
ZiBjaGlsZDIsIGFuZCBzaG91bGQgaW5jbHVkZWQgdGhlIHVub2NjbHVkZWQgcGFydHMgb2YgZWFj
aCBzaWRlLgorICAgICAgICAvLyBUaGlzIGFsc28gZGVtb25zdHJhdGVzIHRoYXQgdGhlIHJlY3Qg
Y2FuIGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3QgZ2V0IGNsaXBwZWQgdG8gdGhlIGxheWVyJ3Mg
dmlzaWJsZUxheWVyUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwg
NDMwLCAyMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRS
ZWN0KC0xMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBwYXN0IHRo
cmVlIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgc28gaXQgc2hvdWxkIGNvbnRhaW4gdGhlIHVu
b2NjbHVkZWQgcGFydHMgb2YgZWFjaCBzaWRlLiBUaGUgbGVmdAorICAgICAgICAvLyBhbmQgYm90
dG9tIGVkZ2VzIGFyZSBjb21wbGV0ZWx5IHVub2NjbHVkZWQgZm9yIHNvbWUgcm93L2NvbHVtbiBz
byB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgcXVlcnkgcmVjdC4KKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkpOworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAg
ICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEw
LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKS5p
c0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50
UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwg
NjAsIDgwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKS5pc0VtcHR5
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3Qo
MTAsIDQzMSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgLy8gfGNoaWxkMnwg
c2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmluZyBub3cKKyAg
ICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMTAsIDEwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMCwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMSwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MzAsIDMwLCA2MCwgMTApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDI5LCAzMCwgMSwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgyOSwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgMjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoOTAsIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDYwLCAx
MCkpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkp
KTsKKyAgICAgICAgLy8gVGhpcyByZWN0IGlzIG1vc3RseSBvY2NsdWRlZCBieSB8Y2hpbGQyfC4K
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzksIDEwLCAxKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7
CisgICAgICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBhc3QgdG9wL3JpZ2h0IGVuZHMgb2YgfGNo
aWxkMnwuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMTEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcw
LCA3MCkpKTsKKyAgICAgICAgLy8gVGhpcyByZWN0IGV4dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0IGVu
ZHMgb2YgfGNoaWxkMnwuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDM5LCA4
MCwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgy
MCwgMzksIDgwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDQw
LCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDMxLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAx
MDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoMzAsIDQxLCA3MCwgNjApKSk7CisKKyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhl
IGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6CisgICAgICAgICAgICAgICAgICAgMTAwCisg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCisg
ICAgICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgICAgIHJvdGF0ZSg5MCkgICAg
ICAgICAgICAgICAgIHwgICAgIDMwICAgNjAgICAgICAgICB8ICAgIHxjaGlsZDJ8OiBcXFxcXAor
ICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICAgICB8ICAzMCArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKwor
ICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgPT0+ICAgICB8ICAgICB8XFxcXFxcXFxcXFxcfCAgfDEwICAgICAgICAgICAgICAgfAor
ICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAg
ICAgICAgICAgICAgICB8ICArLS18XFxcXFxcXFxcXFxcfC0tLS0tLS0tLS0tLS0tLS0tKyAgfAor
ICAgICAgICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tKy8vfCAgICAgNDIwICAgICAgfCAgfAor
ICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHw1MDAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAg
ICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDEwfAor
ICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwgICAg
ICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tKwor
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKKyAgICAgICAgICovCisgICAgfQorfTsKKwor
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNpdFRh
cmdldFR3b1RpbWVzKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJl
bnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIEND
T2NjbHVzaW9uVHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXMgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAg
dm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hp
bGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7
CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5NSk7CisgICAgICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBsYXllclRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAx
MCk7CisKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9
IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSog
Y2hpbGQgPSB0aGlzLT5jcmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICAgICAgY2hpbGQtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBl
KiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgbGF5ZXJUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgY2Fs
Y0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAg
ICAgICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5ZXJUcmFuc2Zvcm0ubWFwUmVj
dChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKGNsaXBwZWRM
YXllckluQ2hpbGQsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllcklu
Q2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwg
MCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBw
ZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwor
ICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwgMCk7CisgICAgICAgIGNsaXBwZWRM
YXllckluQ2hpbGQubW92ZSgxLCAwKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllcklu
Q2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwg
MCk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgICAgICBjbGlwcGVk
TGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92
ZSgwLCAxKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
Y2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHko
KSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7CisKKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgb2NjbHVz
aW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
NzUsIDU1LCAxLCAxKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDc1LCA1NSwg
MSwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDc1
LCA1NSwgMSwgMSkpKTsKKyAgICB9Cit9OwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CitBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VSb3RhdGVkT2ZmQXhpcyk7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0g
ICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywg
Ym9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdp
dGhUd29PcGFxdWVDaGlsZHJlbiA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVz
LCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAg
eworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAgICAgICAg
Y2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zv
cm0ucm90YXRlKDkwKTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0y
NTApOworCisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQg
PSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUq
IGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIxID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllcjIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDEwLCA0NTApLCBJbnRTaXplKDUwMCwgNjApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMo
cGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMik7CisgICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworCisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTEsIDQz
MCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYw
LCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMw
LCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3Qo
OSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQy
OSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0
KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwg
NDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJl
Y3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50
UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZCwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2
MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7CisK
KyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxs
YXllcjF8IGFuZCB8bGF5ZXIyfDoKKworICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KworICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJlZ2lvbiBv
ZiB8bGF5ZXIxfDogLy8vLy8KKyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAg
VmlzaWJsZSByZWdpb24gb2YgfGxheWVyMnw6IFxcXFxcCisgICAgICAgICAgIHwgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgIHwgICAgIHwgICAgICAg
ICAgICAgICB8MTAgICAgICAgICAgICAgICB8CisgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0rICB8CisgICAgICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8
Ly98ICAgICA0MjAgICAgICB8ICB8CisgICAgICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98
NjAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98ICAg
ICAgICAgICAgICB8ICB8CisgICAgICAgICAgICstLXwtLXwtLS0tLS0tLS0tLS18LS0rICAgICAg
ICAgICAgICB8ICB8CisgICAgICAgICAgICAyMHwxMHwgICAgIDcwICAgICB8ICAgICAgICAgICAg
ICAgICB8ICB8CisgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICB8ICB8CisgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8
ICB8CisgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8
CisgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Cisg
ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8CisgICAg
ICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAg
ICAgICAgIHwgICstLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICB8IDQ5MCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICst
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICA2
MCAgICAgICAgICAgICAgIDQ0MAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgcGFyZW50
LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdC5hcHBlbmQocGFyZW50KTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik7CiAKLSAgICBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0
dXJlU2l6ZSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3MgOiBwdWJs
aWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0
ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgy
NTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNo
aWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVS
b290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkMSA9IHRoaXMt
PmNyZWF0ZVN1cmZhY2UocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzAp
LCBJbnRTaXplKDEwLCAxMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBj
aGlsZDIgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMjAsIDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGls
ZDEsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1
MTAsIDUxMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7
CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAs
IC0yMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMik7
CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRM
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0x
MCwgNDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTEsIDQy
MCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMiwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgt
MTAsIDQyMCwgNzAsIDgxKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAs
IDQxOSwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsK
KyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwg
MTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZDIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNl
KGNoaWxkMiwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMSk7
CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwg
SW50UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTEsIDQzMCwgODAsIDcwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQy
OSwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODEsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcxKSkpOwor
CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDEpOworICAg
ICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMSwgY2hpbGQx
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkp
KTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMwLCAyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDE5LCA3MCwgODAp
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTksIDMwLCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwLCAyOSwgODAsIDcw
KSkpOworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246
CisgICAgICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKKyAgICAgICAgICB8ICAgIDIwICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKKyAgICAg
ICAgICB8ICAzMCsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgMTAw
IHwgIDMwfCAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgICAgICB8CisgICAgICAgICAgfDIw
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICB8ICB8IHwg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgIHwgIHwgfCAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgfCAgfCB8ICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICArLS18LXwtLS0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8IDUxMAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAor
ICAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCisgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUxMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAx
MDApKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTxjbGFz
cyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3JtcyA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
aGlsZDFUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOworICAgICAgICBjaGlsZDFUcmFuc2Zvcm0ucm90YXRlKC05MCk7CisgICAgICAgIGNoaWxk
MVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggY2hpbGQyVHJhbnNmb3JtOworICAgICAgICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNs
YXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAg
ICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3Qo
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+Y3Jl
YXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjApLCBJ
bnRTaXplKDEwLCAxMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGls
ZDIgPSB0aGlzLT5jcmVhdGVTdXJmYWNlKHBhcmVudCwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBv
aW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQx
LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUoNTEw
LCA1MTApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IGxheWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOwor
ICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5k
ZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAg
ICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAw
LCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShj
aGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllcjIpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAs
IDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAs
IDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAs
IDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIsIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEw
LCA0MjAsIDcwLCA4MSkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGQyKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShjaGlsZDIsIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9u
LmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cjEpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwot
fQorICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0
KDQyMCwgLTIwLCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQxOSwgLTIwLCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMCwgLTIxLCA4MCwg
OTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJ
bnRSZWN0KDQyMCwgLTE5LCA4MCwgOTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7CiAKLVRFU1Rf
T1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVlblNj
aXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUsIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKKyAg
ICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxk
MS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdm9pZCBsYXllclNjaXNzb3JS
ZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVu
ZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwot
ICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwot
ICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0
ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxz
ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIw
MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1
MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCg1
MCwgNTAsIDIwMCwgMjAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgp
KTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwg
NTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAs
IDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
fQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9sYXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92ZXJQ
YXJ0aWFsVGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyhi
b29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIp
OwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9u
cygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
MC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVy
cyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxp
c3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7Ci0KLSAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAx
MDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0
aWFsVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk7Ci0KLXZvaWQgbGF5
ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0g
ICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRl
cnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
KSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNl
dEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6
ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQt
PnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShw
YXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwg
MTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdl
dCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkuaXNF
bXB0eSgpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92ZXJOb1RpbGVzLCBsYXllclNjaXNzb3JSZWN0
T3Zlck5vVGlsZXMpOwotCi12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMoYm9vbCBv
cGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQot
ICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5h
cHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwg
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwot
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxp
c3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0Owot
ICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJT
dXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50
LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5h
cHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15
TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXIgb2NjbHVzaW9uKEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHko
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJOb1Rp
bGVzLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKTsKLQotdm9pZCBsYXllclNjaXNzb3JS
ZWN0Rm9yTGF5ZXJPZmZPcmlnaW4oYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJl
bmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBw
YXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDksIDIwLCA5MCwg
ODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwLCAxOSwgOTAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMSwgMjAsIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIxLCA5MCwg
ODApKSk7CisKKyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lv
bjoKKyAgICAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgICAgICB8MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXll
cjEKKyAgICAgICAgICAgMTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAg
ICAgICAgMTAwIHx8IDMwICAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgIHwKKyAgICAgICAg
ICAgIHwyMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAg
fHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgIHx8IHwgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgK3wtfC0tLS0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgNTEwCisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUxMCB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICA1MjAgICAgICAgICAgICAg
fCB8CisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwK
KyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNTEwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAg
ICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBw
ZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMo
ZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CitBTExfQ0NPQ0NMVVNJ
T05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNp
YmxpbmdzV2l0aFR3b1RyYW5zZm9ybXMpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMDAsIDEwMCks
IEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwordGVtcGxhdGU8Y2xhc3Mg
VHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEZp
bHRlcnMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7
CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGJsdXJMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNp
emUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIG9wYWNpdHlMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxh
eWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIG9wYXF1ZUxheWVy
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogCi0gICAgcGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwor
ICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlvbjo6QkxV
UikpOworICAgICAgICBibHVyTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShw
YXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7CisgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmNsZWFyKCk7CisgICAgICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOworICAgICAg
ICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5jbGVhcigpOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAu
NSwgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKSk7CisgICAgICAgIG9wYWNpdHlMYXllci0+c2V0
RmlsdGVycyhmaWx0ZXJzKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7
CiAKLSAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0
YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZh
Y2UKLSAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0ZXIgdHJhbnNs
YXRpbmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdpbGwgZmFsbCBv
dXRzaWRlCi0gICAgLy8gdGhlIHNjaXNzb3IgYW5kIGJlIGNvbnNpZGVyZWQgb2NjbHVkZWQuCi0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotfQorICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAKLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0X2xheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbiwgbGF5ZXJTY2lzc29yUmVj
dEZvckxheWVyT2ZmT3JpZ2luKTsKKyAgICAgICAgLy8gT3BhY2l0eSBsYXllciB3b24ndCBjb250
cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFjaXR5TGF5ZXIpOworICAgICAgICBvY2NsdXNp
b24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYWNpdHlMYXllciwgb3BhY2l0eUxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwogCi12b2lkIGRhbWFnZVJlY3RPdmVyVGlsZShib29sIG9wYXF1
ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBw
YXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRk
Q2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5pc0VtcHR5KCkpOwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBh
cmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOworICAgICAgICAvLyBBbmQgaGFzIG5vdGhpbmcgdG8gY29udHJpYnV0ZSB0byBpdHMg
cGFyZW50IHN1cmZhY2UuCisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CiAK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKKyAgICAgICAgLy8gT3BhcXVlIGxheWVyIHdpbGwgY29udHJpYnV0ZSB0byBvY2Ns
dXNpb24uCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVl
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihvcGFxdWVMYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdl
dFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXIsIG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0
OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMCwgNDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAKLSAgICBwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChwYXJlbnQpOworICAgICAgICAvLyBBbmQgaXQgZ2V0cyB0cmFuc2xhdGVkIHRv
IHRoZSBwYXJlbnQgc3VyZmFjZS4KKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIC8vIFRoZSBi
bHVyIGxheWVyIG5lZWRzIHRvIHRocm93IGF3YXkgYW55IG9jY2x1c2lvbiBmcm9tIG91dHNpZGUg
aXRzIHN1YnRyZWUuCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
Ymx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOworCisg
ICAgICAgIC8vIEFuZCBpdCB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAgICAgICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGJsdXJMYXllcik7CisgICAgICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoYmx1ckxheWVyLCBibHVyTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7CisKKyAgICAgICAgLy8g
QnV0IHRoZSBvcGFxdWUgbGF5ZXIncyBvY2NsdXNpb24gaXMgcHJlc2VydmVkIG9uIHRoZSBwYXJl
bnQuCisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICB9Cit9OwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKTsKIAot
ICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KTsKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApLCAmZGFtYWdlKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxh
eWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lk
ZUNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0Ry
YXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKworICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJm
YWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAg
ICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwor
ICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsKIAotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAx
MDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJz
PgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNo
aWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4g
eworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRo
aXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdF
dGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAg
ICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9
Cit9OwogCi0gICAgLy8gT3V0c2lkZSB0aGUgbGF5ZXIncyBjbGlwIHJlY3QuCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOwogCi0gICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE91dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFj
ZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
OworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSkpOwotfQorICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpLmlzRW1wdHkoKSk7CiAK
LVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2Rh
bWFnZVJlY3RPdmVyVGlsZSwgZGFtYWdlUmVjdE92ZXJUaWxlKTsKKyAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdm9pZCBk
YW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0
ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAg
ICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgRmlsdGVy
T3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVy
YXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tF
Ul9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3V0c2lkZUNoaWxkKTsKIAot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVM
YXllcnMpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6
CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwor
CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAw
LCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSA9IDUxMjsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZCk7CiAKLSAgICBwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChwYXJlbnQpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5
ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNo
aWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4g
eworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRo
aXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMt
PmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdF
dGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKIAotICAgIFRlc3REYW1hZ2VDbGll
bnQgZGFtYWdlKEZsb2F0UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdl
KTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9u
VHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQg
cnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBh
cmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAw
LCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBkYW1hZ2UoRmxvYXRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApLCAmZGFtYWdlKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
IAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0g
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIs
IEludFJlY3QoMCwgMCwgMjAwLCAyMDApKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsK
KyAgICB9Cit9OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwot
fQorQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1h
Z2VSZWN0T3ZlckNoaWxkKTsKIAotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlLCBkYW1hZ2VSZWN0T3Zl
ckN1bGxlZFRpbGUpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hp
bGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsK
KyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0
YyhwYXJlbnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKKworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAz
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAs
IDEwMCwgMzAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAx
MDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorfTsKIAotdm9pZCBk
YW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3
IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3Jl
YXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwot
ICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
LCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgy
MDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNp
emUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3Qo
SW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50
LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOwotCi0gICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0KDUwLCA1MCwg
MjAwLCAyMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAw
LCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwg
NTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCAxMDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lv
blRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzLCBkYW1hZ2VSZWN0T3ZlclBh
cnRpYWxUaWxlcyk7Ci0KLXZvaWQgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3BhcXVlTGF5
ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVu
dExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShG
bG9hdFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7Ci0KLSAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAyMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1w
dHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgx
MDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3Zlck5vVGlsZXMs
IGRhbWFnZVJlY3RPdmVyTm9UaWxlcyk7Ci0KLVRFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdCwg
b3BhcXVlQ29udGVudHNSZWdpb25FbXB0eSkKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsK
LSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCk7
CiAKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25z
KCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgw
LjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMo
ZmlsdGVycyk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQg
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3Jl
YXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0Yyhw
YXJlbnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
KworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEw
MCwgMzAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAs
IDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorfTsKIAotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UsIGZhbHNlKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNL
RVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVy
Q2hpbGQpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZh
Y2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5
ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwordGVtcGxhdGU8Y2xh
c3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dERhbWFnZVJlY3RQYXJ0bHlPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3Qo
KQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVu
dCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgcGFyZW50LT5yZW5kZXJT
dXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50
LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5h
cHBlbmQocGFyZW50KTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVudDx0eXBlbmFtZSBUeXBlczo6
UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOwor
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKIAotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMTUw
LCAxNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0KDAs
IDAsIDIwMCwgMjAwKSkpOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwg
MjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKIAotICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBv
dXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5kcy4KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFy
dGx5T3ZlckNoaWxkKTsKIAotICAgIC8vIFRlc3Qgd2l0aG91dCBhbnkgc2Npc3NvcnMuCi0gICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNj
aXNzb3JSZWN0KCk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+Citj
bGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nIDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgY2FsY0RyYXdFdGMocGFy
ZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKKworICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwg
MTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
K0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJT
Y2lzc29yUmVjdE92ZXJOb3RoaW5nKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVEo
MHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
fQordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOworCisg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5
cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
NTAwLCA1MDAsIDEwMCwgMTAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAw
LCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi1URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkpCi17Ci0gICAgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CitBTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0
T3Zlck5vdGhpbmcpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2Us
IGZhbHNlKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgICAgICBUZXN0RGFtYWdlQ2xpZW50
PHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVjdCg1MDAs
IDUwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxh
eWVyLCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkuaXNFbXB0eSgpKTsKIAotICAgIHsKLSAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tF
Ul9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcpOwogCi0g
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZv
ckxheWVyT2ZmT3JpZ2luIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9w
YXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5j
cmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBs
YXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAg
ICAgY2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKKworICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3biBpbnRv
IGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUgdGFyZ2V0
IHN1cmZhY2UKKyAgICAgICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFm
dGVyIHRyYW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3
aWxsIGZhbGwgb3V0c2lkZQorICAgICAgICAvLyB0aGUgc2Npc3NvciBhbmQgYmUgY29uc2lkZXJl
ZCBvY2NsdWRlZC4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogICAgIH0KK307CisKK0FMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVj
dEZvckxheWVyT2ZmT3JpZ2luKTsKIAordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVl
TGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9u
RW1wdHkgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgyMCwgMjAsIDE4MCwg
MTgwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQg
PSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxz
ZSk7CisgICAgICAgIGNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5
cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTIwLCAxMjAsIDE4MCwgMTgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKIAot
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMg
b3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAg
ICAgLy8gVGVzdCB3aXRob3V0IGFueSBzY2lzc29ycy4KKyAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsK
KworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAg
ICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKICAgICB9
Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RP
cGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KTsKIAordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wg
b3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRz
UmVnaW9uTm9uRW1wdHkgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3Bh
cXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAg
ICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgxNTAs
IDE1MCwgMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVu
dCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgZmFsc2UpOworICAgICAgICBjYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0
KCkpOworICAgICAgICB7CisgICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIGxh
eWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogCi0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjUwLCAyNTAsIDUwLCA1MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwg
MTAwLCAxMDAsIDEwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRz
KCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgICAgICBs
YXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOwor
CisgICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisKKyAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTIw
LCAxMjAsIDE4MCwgMTgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVudHNSZWN0
KEludFJlY3QoMTUwLCAxNTAsIDEwMCwgMTAwKSk7CisKKyAgICAgICAgICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKworICAgICAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyNTAsIDI1MCwgNTAsIDUwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICB9CiAgICAgfQotfQorfTsKKworTUFJ
Tl9BTkRfSU1QTF9USFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVu
dHNSZWdpb25Ob25FbXB0eSk7CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131179</attachid>
            <date>2012-03-10 11:14:59 -0800</date>
            <delta_ts>2012-03-11 17:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120310141457.patch</filename>
            <type>text/plain</type>
            <size>226193</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlNjMyYTNiNWUwYzE2YzZjNDhmYTk2NDQwZWQwZTMwZmNhY2EwODQuLjBjMzNlYTIwMWE3ZjVi
NjUxODg2MWRjODNkY2NmYmRjYTMwZTgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMTItMDMtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3RzIGFuZCB0
ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IEFk
cmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckNocm9taXVtOjpUZXN0Q29u
dGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckNo
cm9taXVtOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29u
dGVudExheWVyQ2hyb21pdW06OnNldE9wYXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChUZXN0
Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoVGVzdENvbnRlbnRMYXllckltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckltcGw6OlRlc3RDb250ZW50TGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpvcGFxdWVDb250
ZW50c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVySW1wbDo6c2V0
T3BhcXVlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpvY2NsdXNp
b25JblNjcmVlblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlOjpvY2NsdXNpb25JblRhcmdldFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnNldE9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RGFtYWdlQ2xpZW50OjpkYW1hZ2VSZWN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RNYWluVGhyZWFkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdE1haW5UaHJlYWRUeXBlczo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBlczo6Y3JlYXRlQ29udGVudExh
eWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFkVHlwZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlczo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdElt
cGxUaHJlYWRUeXBlczo6Y3JlYXRlQ29udGVudExheWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6
VGVhckRvd24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3Jl
YXRlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVh
dGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVh
dGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNy
ZWF0ZURyYXdpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0OjpjcmVhdGVEcmF3aW5nU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0OjpjYWxjRHJhd0V0Yyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0OjpzZXRCYXNlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0OjpzZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAg
ICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpy
dW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdv
VGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFy
Z2V0VHdvVGltZXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U3VyZmFjZVJvdGF0ZWRPZmZBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGls
ZHJlbjo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3M6OnJ1bk15VGVzdCk6CisgICAgICAgIChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJh
bnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3Zlcmxh
cHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hp
bGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Np
c3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQ6
OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29y
UmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RM
YXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRl
c3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFy
dGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RT
Y3JlZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxk
OjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3Nv
clJlY3RPdmVyTm90aGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5v
dGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdl
UmVjdE92ZXJOb3RoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3REYW1hZ2VSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJP
ZmZPcmlnaW46OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3Bh
cXVlQ29udGVudHNSZWdpb25FbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRy
YWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lv
bk5vbkVtcHR5OjpydW5NeVRlc3QpOgorCiAyMDEyLTAzLTA4ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFeHBvc2UgdGhlIHNoYXJl
ZCBncmFwaGljcyBjb250ZXh0IG9uIFdlYlZpZXcgc28gY2FsbGVycyBjYW4gYWxsb2NhdGUgcmVz
b3VyY2VzIG9uIHRoZSBtYWluIHRocmVhZCBmb3IgdGhlIGNvbXBvc2l0b3IgdG8gdXNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LmNwcAppbmRleCAyNmQ1MjUyM2JlMTM0YzJlZmM5NzhiMzRhMGJkNGMzMzIwNTA5Y2FjLi5i
ZDg0YzhkYzk0MmNiOTMzNTlhZWVjNTkzMGJjNDkzZWVjM2IwODRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAK
QEAgLTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
UmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgor
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dt
b2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KQEAgLTQ1LDg0ICs0Nyw2NiBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQgOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CitjbGFzcyBU
ZXN0Q29udGVudExheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6
Ci0gICAgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKQotICAgICAgICA6IExh
eWVyQ2hyb21pdW0oKQotICAgIHsKLSAgICB9CisgICAgVGVzdENvbnRlbnRMYXllckNocm9taXVt
KCkgOiBMYXllckNocm9taXVtKCkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNvbnRl
bnRzUmVnaW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnRlcnNlY3Rpb24obV9v
cGFxdWVQYWludFJlY3QsIHZpc2libGVMYXllclJlY3QoKSk7Ci0gICAgfQotCi0gICAgdm9pZCBz
ZXRPcGFxdWVQYWludFJlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlUGFpbnRSZWN0KSB7IG1fb3Bh
cXVlUGFpbnRSZWN0ID0gb3BhcXVlUGFpbnRSZWN0OyB9CisgICAgdmlydHVhbCBSZWdpb24gb3Bh
cXVlQ29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFxdWVD
b250ZW50c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZUNv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFxdWVD
b250ZW50c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KIAogcHJpdmF0ZToKLSAgICBJbnRS
ZWN0IG1fb3BhcXVlUGFpbnRSZWN0OworICAgIEludFJlY3QgbV9vcGFxdWVDb250ZW50c1JlY3Q7
CiB9OwogCi12b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCi17Ci0gICAgbGF5ZXItPnNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwotICAgIGxheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKLSAgICBsYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQ
b2ludCgwLCAwKSk7Ci0gICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICBsYXll
ci0+c2V0Qm91bmRzKGJvdW5kcyk7Ci19Ci0KLXZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCogbGF5ZXIsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9u
LCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlLCBib29sIG9wYXF1ZUxheWVycykK
LXsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLCB0cmFuc2Zvcm0sIHBv
c2l0aW9uLCBib3VuZHMpOwotICAgIGlmIChvcGFxdWVMYXllcnMpCi0gICAgICAgIGxheWVyLT5z
ZXRPcGFxdWUob3BhcXVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbGF5ZXItPnNldE9wYXF1ZShm
YWxzZSk7Ci0gICAgICAgIGlmIChvcGFxdWUpCi0gICAgICAgICAgICBsYXllci0+c2V0T3BhcXVl
UGFpbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICB9Ci19
CitjbGFzcyBUZXN0Q29udGVudExheWVySW1wbCA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CitwdWJs
aWM6CisgICAgVGVzdENvbnRlbnRMYXllckltcGwoaW50IGlkKSA6IENDTGF5ZXJJbXBsKGlkKSB7
IHNldERyYXdzQ29udGVudCh0cnVlKTsgfQorCisgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29u
dGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVybiBpbnRlcnNlY3Rpb24obV9vcGFxdWVDb250ZW50
c1JlY3QsIHZpc2libGVMYXllclJlY3QoKSk7IH0KKyAgICB2b2lkIHNldE9wYXF1ZUNvbnRlbnRz
UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVDb250ZW50c1JlY3QpIHsgbV9vcGFxdWVDb250ZW50
c1JlY3QgPSBvcGFxdWVDb250ZW50c1JlY3Q7IH0KK3ByaXZhdGU6CisgICAgSW50UmVjdCBtX29w
YXF1ZUNvbnRlbnRzUmVjdDsKK307CiAKIC8vIEEgc3ViY2xhc3MgdG8gZXhwb3NlIHRoZSB0b3Rh
bCBjdXJyZW50IG9jY2x1c2lvbi4KLWNsYXNzIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgOiBwdWJs
aWMgQ0NPY2NsdXNpb25UcmFja2VyIHsKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlw
ZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitjbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFz
ZSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+IHsKIHB1YmxpYzoKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKEludFJlY3Qgc2Ny
ZWVuU2Npc3NvclJlY3QpCi0gICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyKHNjcmVlblNjaXNz
b3JSZWN0KQorICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlKEludFJlY3Qgc2NyZWVuU2Np
c3NvclJlY3QpCisgICAgICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCkKICAgICAgICAgLCBtX292ZXJyaWRl
TGF5ZXJTY2lzc29yUmVjdChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlcihJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRy
YWNrZXJEYW1hZ2VDbGllbnQqIGRhbWFnZUNsaWVudCkKLSAgICAgICAgOiBDQ09jY2x1c2lvblRy
YWNrZXIoc2NyZWVuU2Npc3NvclJlY3QsIGRhbWFnZUNsaWVudCkKKyAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNjaXNzb3JSZWN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXJEYW1hZ2VDbGllbnRCYXNlPFJlbmRlclN1cmZhY2VUeXBlPiogZGFtYWdlQ2xpZW50
KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3QsIGRhbWFnZUNsaWVudCkKICAgICAgICAgLCBtX292
ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgUmVnaW9u
IG9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNr
ZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuOyB9Ci0gICAgUmVnaW9uIG9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlcjo6
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQ7IH0KKyAgICBSZWdpb24gb2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2Ny
ZWVuOyB9CisgICAgUmVnaW9uIG9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46
Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0OyB9CiAKLSAgICB2b2lkIHNldE9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsgQ0NPY2NsdXNpb25UcmFj
a2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lvbjsgfQotICAgIHZv
aWQgc2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IEND
T2NjbHVzaW9uVHJhY2tlcjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQgPSByZWdp
b247IH0KKyAgICB2b2lkIHNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UoY29uc3QgUmVnaW9uJiBy
ZWdpb24pIHsgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSByZWdpb247IH0KKyAgICB2
b2lkIHNldE9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBD
Q09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lvbjsgfQogCiAgICAgdm9pZCBzZXRM
YXllclNjaXNzb3JSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9vdmVycmlkZUxheWVyU2Np
c3NvclJlY3QgPSB0cnVlOyBtX2xheWVyU2Npc3NvclJlY3QgPSByZWN0O30KICAgICB2b2lkIHVz
ZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCkgeyBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA9
IGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJTY2lzc29y
UmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgY29uc3QgeyBy
ZXR1cm4gbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3QgPyBtX2xheWVyU2Npc3NvclJlY3QgOiBD
Q09jY2x1c2lvblRyYWNrZXI6OmxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIp
OyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2Uo
Y29uc3QgTGF5ZXJUeXBlKiBsYXllcikgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUxheWVyU2Np
c3NvclJlY3QgPyBtX2xheWVyU2Npc3NvclJlY3QgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJm
YWNlKGxheWVyKTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9vdmVycmlkZUxheWVyU2Npc3Nv
clJlY3Q7CiAgICAgSW50UmVjdCBtX2xheWVyU2Npc3NvclJlY3Q7CiB9OwogCi1jbGFzcyBUZXN0
RGFtYWdlQ2xpZW50IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckRhbWFnZUNsaWVudCB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KK2NsYXNzIFRlc3REYW1hZ2VDbGll
bnQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyRGFtYWdlQ2xpZW50QmFzZTxSZW5kZXJTdXJm
YWNlVHlwZT4gewogcHVibGljOgogICAgIC8vIFRoZSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBkYW1hZ2VSZWN0KGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSopIGNvbnN0IHsg
cmV0dXJuIG1fZGFtYWdlUmVjdDsgfQorICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRhbWFnZVJlY3Qo
Y29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqKSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVJlY3Q7IH0K
IAogICAgIC8vIFRlc3Rpbmcgc3R1ZmYKICAgICBUZXN0RGFtYWdlQ2xpZW50KGNvbnN0IEZsb2F0
UmVjdCYgZGFtYWdlUmVjdCkgOiBtX2RhbWFnZVJlY3QoZGFtYWdlUmVjdCkgeyB9CkBAIC0xMzIs
MjA4MSArMTE2LDE1ODggQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kYW1hZ2VSZWN0Owog
fTsKIAotI2RlZmluZSBURVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoRlVMTFRFU1ROQU1F
LCBTSE9SVFRFU1ROQU1FKSBcCi0gICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZUxheWVyKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBT
SE9SVFRFU1ROQU1FKHRydWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBURVNUKEZVTExURVNUTkFNRSwgb3BhcXVlUGFpbnRSZWN0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNI
T1JUVEVTVE5BTUUoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKK3N0cnVjdCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TWFpblRocmVhZFR5cGVzIHsKKyAgICB0
eXBlZGVmIExheWVyQ2hyb21pdW0gTGF5ZXJUeXBlOworICAgIHR5cGVkZWYgUmVuZGVyU3VyZmFj
ZUNocm9taXVtIFJlbmRlclN1cmZhY2VUeXBlOworICAgIHR5cGVkZWYgVGVzdENvbnRlbnRMYXll
ckNocm9taXVtIENvbnRlbnRMYXllclR5cGU7CisgICAgdHlwZWRlZiBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gTGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxMYXllckNocm9taXVt
PiBQYXNzTGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPENvbnRlbnRMYXllclR5cGU+
IENvbnRlbnRMYXllclB0clR5cGU7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPENvbnRlbnRMYXll
clR5cGU+IFBhc3NDb250ZW50TGF5ZXJQdHJUeXBlOworCisgICAgc3RhdGljIFBhc3NMYXllclB0
clR5cGUgY3JlYXRlTGF5ZXIoKSB7IHJldHVybiBMYXllckNocm9taXVtOjpjcmVhdGUoKTsgfQor
ICAgIHN0YXRpYyBQYXNzQ29udGVudExheWVyUHRyVHlwZSBjcmVhdGVDb250ZW50TGF5ZXIoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyVHlwZSgpKTsgfQorfTsKKworc3RydWN0
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFkVHlwZXMgeworICAgIHR5cGVkZWYgQ0NM
YXllckltcGwgTGF5ZXJUeXBlOworICAgIHR5cGVkZWYgQ0NSZW5kZXJTdXJmYWNlIFJlbmRlclN1
cmZhY2VUeXBlOworICAgIHR5cGVkZWYgVGVzdENvbnRlbnRMYXllckltcGwgQ29udGVudExheWVy
VHlwZTsKKyAgICB0eXBlZGVmIE93blB0cjxDQ0xheWVySW1wbD4gTGF5ZXJQdHJUeXBlOworICAg
IHR5cGVkZWYgUGFzc093blB0cjxDQ0xheWVySW1wbD4gUGFzc0xheWVyUHRyVHlwZTsKKyAgICB0
eXBlZGVmIE93blB0cjxDb250ZW50TGF5ZXJUeXBlPiBDb250ZW50TGF5ZXJQdHJUeXBlOworICAg
IHR5cGVkZWYgUGFzc093blB0cjxDb250ZW50TGF5ZXJUeXBlPiBQYXNzQ29udGVudExheWVyUHRy
VHlwZTsKKworICAgIHN0YXRpYyBQYXNzTGF5ZXJQdHJUeXBlIGNyZWF0ZUxheWVyKCkgeyByZXR1
cm4gQ0NMYXllckltcGw6OmNyZWF0ZShuZXh0Q0NMYXllckltcGxJZCsrKTsgfQorICAgIHN0YXRp
YyBQYXNzQ29udGVudExheWVyUHRyVHlwZSBjcmVhdGVDb250ZW50TGF5ZXIoKSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgQ29udGVudExheWVyVHlwZShuZXh0Q0NMYXllckltcGxJZCsrKSk7IH0KKyAg
ICBzdGF0aWMgaW50IG5leHRDQ0xheWVySW1wbElkOworfTsKKworaW50IENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RJbXBsVGhyZWFkVHlwZXM6Om5leHRDQ0xheWVySW1wbElkID0gMDsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgcnVuTXlUZXN0KCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkK
KyAgICB7CisgICAgICAgIG1fcm9vdC5jbGVhcigpOworICAgICAgICBtX3JlbmRlclN1cmZhY2VM
YXllckxpc3RDaHJvbWl1bS5jbGVhcigpOworICAgICAgICBtX3JlbmRlclN1cmZhY2VMYXllckxp
c3RJbXBsLmNsZWFyKCk7CiAgICAgfQogCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
KGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQg
dHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAg
ICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1
MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0g
NTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0
Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVu
dC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXpl
KTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcw
KSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9uLnNl
dExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyOSwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMxLCA3MCwg
NzApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uLCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbik7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRpb24o
Ym9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5
ZXJUcmFuc2Zvcm07Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKLSAg
ICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVy
VHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBv
cGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRl
clN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1
bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAg
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFy
ZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGxheWVyLmdldCgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAs
IDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotCi0gICAg
b2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAs
IDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAs
IDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwg
MjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzEsIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgzMSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7Ci19Ci0K
LVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xh
eWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uLCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhSb3RhdGlvbik7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoVHJhbnNsYXRpb24oYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0
aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVy
U3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRl
KDIwLCAyMCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5z
Zm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxh
eWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
ci5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1
MCwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50
UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKLQotICAgIG9jY2x1
c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
NDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUwLCA1MCwg
NTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1
MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0
OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUx
LCA0OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgxMDAsIDUwLCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNTEsIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTEsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDUwLCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg0OSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOwotCi0gICAgb2Nj
bHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUw
LCA1MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUw
LCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDks
IDQ5LCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCg0OSwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDUwLCA0OSwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCg1MCwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDUxLCA0OSwgNDksIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCg1MSwgNDksIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg1MSwgNTAs
IDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0Vt
cHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MSwgMSwgNDkpLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKLSAg
ICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24sIGxheWVyQWRk
ZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uKTsKLQotdm9pZCBsYXllckFkZGVkVG9P
Y2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAg
ICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQu
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAg
cGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGls
ZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1
MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgp
LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJl
Y3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MSwg
NzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwg
SW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExh
eWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MSkp
KTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5n
ZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5n
ZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjks
IDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Np
c3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMw
LCAzOSwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsK
LSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKLQotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBm
cm9tIHxsYXllcnw6Ci0gICAgICAgICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUg
cmVnaW9uIG9mIHxsYXllcnw6IC8vLy8vCi0gICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwKLSAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
ICAxMDAgfCAgICB8ICAxMCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICA9PT4gICAgIHwgICAgIHwgICAgICAgICAgICAgICB8MTAgICAgICAgICAgICAgICB8Ci0gICAg
ICB8ICAgIHwxMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgIHwg
ICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAgfCAgICB8
ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwg
IHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8Ci0gICAgICB8ICAgIHwgIHwg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAg
fC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKLSAgICAgICstLS0tfC0tfC0tLS0t
LS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0t
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAgIDcw
ICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
MTB8Ci0gICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsK
LSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAgICAgICAgICAgfAotICAgICAg
ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTAwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVE
X09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFJvdGF0ZWRTdXJmYWNlLCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVk
U3VyZmFjZSk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoU3VyZmFjZUFs
cmVhZHlPblN0YWNrKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhh
dCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZDIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hp
bGQobGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQyKTsKLQotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNo
aWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUw
MCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyB8Y2hpbGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1
cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2NsdXNpb25UcmFja2VyIGZpcnN0LCBpbnN0ZWFk
IG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMgZGlmZmVyZW50IGNvZGUgaW4KLSAgICAvLyBs
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZSwgYXMgdGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJl
YWR5IGJlZW4gc2Vlbi4KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg2MCwgMjAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1
ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxp
c3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJl
bmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBw
YXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
ZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2Nj
bHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkp
OwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
Mi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0K
LSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQo
KSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMw
LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdl
dCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwg
NDMxLCA2MCwgNzApKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzAp
KS5pc0VtcHR5KCkpOwotICAgIC8vIFRoaXMgaXMgdGhlIGxpdHRsZSBwaWVjZSBub3Qgb2NjbHVk
ZWQgYnkgY2hpbGQyCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDEwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0
MzAsIDYwLCA3MCkpKTsKLSAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCBib3RoIHNpZGVzIG9mIGNo
aWxkMiwgc28gaXQgd2lsbCBiZSB0aGUgb3JpZ2luYWwgcmVjdC4KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpKTsKLSAgICAvLyBUaGlzIGV4
dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBhbmQgc2hvdWxkIGluY2x1
ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4KLSAgICAvLyBUaGlzIGFsc28g
ZGVtb25zdHJhdGVzIHRoYXQgdGhlIHJlY3QgY2FuIGJlIGFyYml0cmFyeSBhbmQgZG9lcyBub3Qg
Z2V0IGNsaXBwZWQgdG8gdGhlIGxheWVyJ3MgdmlzaWJsZUxheWVyUmVjdCgpLgotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDIwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpKTsKLSAg
ICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBhZGphY2VudCBzaWRlcyBvZiBjaGlsZDIsIHNv
IGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4gVGhl
IGxlZnQKLSAgICAvLyBhbmQgYm90dG9tIGVkZ2VzIGFyZSBjb21wbGV0ZWx5IHVub2NjbHVkZWQg
Zm9yIHNvbWUgcm93L2NvbHVtbiBzbyB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgcXVlcnkgcmVj
dC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2
MCwgODApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQy
OSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEx
LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVj
dCgxMCwgNDMxLCA2MCwgNzApKSk7Ci0KLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Np
c3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQo
KSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0
MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEx
LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzAp
KS5pc0VtcHR5KCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNoaWxkLmdldCgpKTsKLSAgICAvLyB8Y2hpbGQyfCBzaG91bGQgZ2V0IG1lcmdlZCB3aXRo
IHRoZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5vdwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRh
cmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0K
LSAgICBWZWN0b3I8SW50UmVjdD4gc2NyZWVuID0gb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpOwotICAgIFZlY3RvcjxJbnRSZWN0PiB0YXJnZXQgPSBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKTsKLQotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMwLCAxMCwgMTApLCBvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3
MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMzAsIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5
LCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDYwLCAxMCkpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3Qo
MzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjAp
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDMwLCA2MCwgMTApKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEsIDEwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKS5pc0VtcHR5KCkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBpcyBt
b3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5
MCwgMzksIDEwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGV4dGVuZHMg
cGFzdCB0b3AvcmlnaHQgZW5kcyBvZiB8Y2hpbGQyfC4KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgLy8gVGhpcyByZWN0IGV4
dGVuZHMgcGFzdCBsZWZ0L3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMCwgMzksIDgwLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAg
ICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyfDoK
LSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0g
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxh
eWVyfDogLy8vLy8KLSAgICAgIHwgICAgMzAgICAgICAgICAgICAgICB8ICAgICAgICAgICByb3Rh
dGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAzMCAgIDYwICAgICAgICAgfCAgICB8Y2hpbGQy
fDogXFxcXFwKLSAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgICAgICB8ICAzMCArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotICAxMDAgfCAgICB8ICAxMCAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICA9PT4gICAgIHwgICAgIHxcXFxcXFxcXFxcXFx8ICB8MTAgICAgICAgICAgICAgICB8
Ci0gICAgICB8ICAgIHwxMCstLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICAgfCAgKy0tfFxcXFxcXFxcXFxcXHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAg
ICAgIHwgICAgKyAtLS0tLS0tLS0tLS0rICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tKy8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAg
fCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8Ci0gICAgICB8ICAg
IHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
fCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKLSAgICAgICstLS0tfC0t
fC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18
LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwg
ICAgIDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8MTB8Ci0gICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LXwtLSsKLSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAgICAgICAgICAgfAot
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNTAwCi0gICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9Q
QUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVk
UmVnaW9uV2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjaywgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdp
b25XaXRoU3VyZmFjZUFscmVhZHlPblN0YWNrKTsKLQotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRl
ZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFy
ZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7
Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIC8vIE5vdyByb3RhdGUgdGhlIGNo
aWxkIGEgbGl0dGxlIG1vcmUgc28gaXQgaXMgbm90IGF4aXMtYWxpZ25lZC4gVGhlIHBhcmVudCB3
aWxsIG5vIGxvbmdlciBiZSBvY2NsdWRlZCBieSB8bGF5ZXJ8LCBidXQKLSAgICAvLyB0aGUgY2hp
bGQncyBvY2NsdXNpb24gc2hvdWxkIGJlIHVuY2hhbmdlZC4KLQotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAs
IDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDk1KTsKLSAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKLQotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQot
ICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRl
clN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RD
b21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCks
IHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLQotICAgIEludFJlY3QgY2xpcHBlZExheWVySW5DaGlsZCA9IGxheWVyVHJh
bnNmb3JtLm1hcFJlY3QobGF5ZXItPnZpc2libGVMYXllclJlY3QoKSk7Ci0KLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoY2xpcHBlZExh
eWVySW5DaGlsZCwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygp
KTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5D
aGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRM
YXllckluQ2hpbGQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0g
ICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDEsIDApOwotICAgIGNsaXBwZWRMYXllckluQ2hp
bGQubW92ZSgxLCAwKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxk
KS5pc0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgtMSwgMCk7Ci0gICAg
Y2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBj
bGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAgIGNsaXBwZWRMYXllckluQ2hpbGQu
bW92ZSgwLCAxKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5D
aGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlw
cGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGNoaWxkLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwgNTUsIDEsIDEpKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCg3NSwgNTUsIDEsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg3NSwgNTUsIDEsIDEpKSk7Ci19Ci0KLVRFU1RfT1BB
UVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyQWRkZWRU
b09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZSwgbGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKTsKLQotdm9pZCBsYXllckFkZGVk
VG9PY2NsdWRlZFJlZ2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycyhib29sIG9wYXF1ZUxheWVy
cykKLXsKLSAgICAvLyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHRlc3QgYnV0IG5v
dyB3ZSBtYWtlIGEgZmV3IG9wYXF1ZSBsYXllcnMgaW5zaWRlIG9mIHxjaGlsZHwgc28gdGhhdCB0
aGUgb2NjbHVkZWQgcGFydHMgb2YgY2hpbGQgYXJlIG5vdCBhIHNpbXBsZSByZWN0LgotICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNy
ZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkKTsKLSAgICBj
aGlsZC0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIyKTsKLQot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsK
LSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzAp
LCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUo
NTAwLCA0NDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgNDUw
KSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIGNoaWxkLT5z
ZXRNYXNrc1RvQm91bmRzKHRydWUpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xp
cFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5n
ZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
LQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0
KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwg
NDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZC5nZXQoKSwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxk
LmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkp
KTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7
Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwg
Y2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDQwLCA3
MCwgNjApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgNDAsIDcw
LCA2MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgNDAsIDEs
IDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjksIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzks
IDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAs
IDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24g
Zm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6Ci0KLSAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjF8OiAvLy8vLwotICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjJ8OiBcXFxcXAotICAg
ICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgfCAg
ICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAgICAgICAgIHwKLSAgICAgICB8ICArLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAgfAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxc
XFx8Ly98ICAgICA0MjAgICAgICB8ICB8Ci0gICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3w2
MCAgICAgICAgICAgIHwgIHwKLSAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAg
ICAgICAgfCAgfAotICAgICAgICstLXwtLXwtLS0tLS0tLS0tLS18LS0rICAgICAgICAgICAgICB8
ICB8Ci0gICAgICAgIDIwfDEwfCAgICAgNzAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAg
IHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgIHwxMHwKLSAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0t
fC0tKwotICAgICAgICAgIHwgICAgICAgICAgICAgICB8IDQ5MCAgICAgICAgICAgICB8Ci0gICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAg
ICA2MCAgICAgICAgICAgICAgIDQ0MAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbldpdGhNdWx0aXBsZU9wYXF1ZUxheWVycywgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25X
aXRoTXVsdGlwbGVPcGFxdWVMYXllcnMpOwotCi12b2lkIHN1cmZhY2VPY2NsdXNpb25XaXRoT3Zl
cmxhcHBpbmdTaWJsaW5nU3VyZmFjZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhp
cyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIxID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVu
dC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQxKTsK
LSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMik7Ci0gICAgY2hpbGQxLT5hZGRDaGlsZChsYXll
cjEpOwotICAgIGNoaWxkMi0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAs
IDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMS5n
ZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUw
MCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoNTAwLCA1MDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFx
dWVMYXllcnMpOwotCi0gICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwotICAgIGNo
aWxkMi0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6
ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQt
PnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkp
OwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShw
YXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJl
U2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAsIDQwLCA4MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgNDIwLCA2MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91
bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoMCwgNDIwLCA2MCwgODApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEsIDQyMCwg
NjAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdl
dCgpLCBJbnRSZWN0KDAsIDQxOSwgNjAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQyMCwgNjEsIDgwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAs
IDQyMCwgNjAsIDgxKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkMi5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFj
ZShjaGlsZDIuZ2V0KCksIGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJmYWNl
KCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEuZ2V0KCkp
OwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCA0MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgwLCA0MzAs
IDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5n
ZXQoKSwgSW50UmVjdCgtMSwgNDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDI5LCA3MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3Qo
MCwgNDMwLCA3MSwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJm
YWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwg
ODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjks
IDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCA0MCwgODAsIDYwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDE5LCA0MCwgODAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSkpOwotCi0gICAgLyogSnVz
dGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAot
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICB8Ci0gICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICBjaGlsZDEKLSAgICAgIHwg
IDMwKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIDEwMCB8ICA0MHwgICAg
ICAgICAgICAgICAgfCAgICAgY2hpbGQyICAgICAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgfCB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgIHwgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwK
LSAgICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCB8Ci0gICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA1MDAKLSAgICAgICAgIHwg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAg
ICAgICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCi0gICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUwMAot
ICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2Vz
LCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJsYXBwaW5nU2libGluZ1N1cmZhY2VzKTsKLQotdm9p
ZCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZShib29sIG9wYXF1ZUxheWVycykKLXsKLSAg
ICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQu
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXll
cjEgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChj
aGlsZDEpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQyKTsKLSAgICBjaGlsZDEtPmFkZENo
aWxkKGxheWVyMSk7Ci0gICAgY2hpbGQyLT5hZGRDaGlsZChsYXllcjIpOwotCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKDI1MCwgMjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIC8vIFRoZSBvd25pbmcgbGF5
ZXJzIGhhdmUgdmVyeSBkaWZmZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhl
eSBvd24uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllcjEuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAg
ICAvLyBNYWtlIHRoZW0gYm90aCByZW5kZXIgc3VyZmFjZXMKLSAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7Ci0gICAgY2hpbGQxLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGNoaWxkMi0+
c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIGNoaWxkMS0+c2V0TWFza3NUb0JvdW5kcyhmYWxz
ZSk7Ci0gICAgY2hpbGQyLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKLQotICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlN
YXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRD
b250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsK
LSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50
LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7
Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVt
bXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLQotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJ
bnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAs
IDQyMCwgNzEsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7Ci0KLSAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTEs
IDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGls
ZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50
UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1cmZhY2Uo
KSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIxLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIw
LCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDgwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5n
ZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMSwgNDMwLCA4MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJl
Y3QoLTEwLCA0MjksIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgODEsIDcwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMw
LCA4MCwgNzEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hp
bGQxLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNo
aWxkMS5nZXQoKSwgY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2
ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMjAsIDgwLCA4MCkp
KTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMzAsIDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjksIDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDE5LCA3
MCwgODApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDE5LCAzMCwgODAsIDcwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIw
LCAyOSwgODAsIDcwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9j
Y2x1c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLSAgICAgIHwgICAgMjAgICAgICAgICAgICAgICB8ICAgICAgIGxheWVyMQotICAgICAgfCAg
MzArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgMTAwIHwgIDMwfCAgICAg
ICAgICAgICAgICB8ICAgICBsYXllcjIgICAgICB8Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICB8IHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgfCB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAot
ICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8IHwKLSAgICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IDUxMAotICAgICAgICAgfCB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAg
ICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LSsKLSAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAgICAgICAgICAgNTEwCi0g
ICAgICovCi19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X3N1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlLCBzdXJmYWNlT2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSk7Ci0KLXZvaWQgc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2VEaWZm
ZXJlbnRUcmFuc2Zvcm1zKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMg
dGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVmKG5ldyBM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0
ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMSk7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChjaGlsZDIpOwotICAgIGNoaWxkMS0+YWRkQ2hpbGQobGF5ZXIxKTsKLSAg
ICBjaGlsZDItPmFkZENoaWxkKGxheWVyMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
aGlsZDFUcmFuc2Zvcm07Ci0gICAgY2hpbGQxVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7
Ci0gICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgtOTApOwotICAgIGNoaWxkMVRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDJU
cmFuc2Zvcm07Ci0gICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAg
Y2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0
ZSgtMjUwLCAtMjUwKTsKLQotICAgIC8vIFRoZSBvd25pbmcgbGF5ZXJzIGhhdmUgdmVyeSBkaWZm
ZXJlbnQgYm91bmRzIGZyb20gdGhlIHN1cmZhY2VzIHRoYXQgdGhleSBvd24uCi0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhjaGlsZDEuZ2V0KCksIGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwg
MjApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNp
emUoNTEwLCA1MjApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZDJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMjAs
IDQwKSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRT
aXplKDUxMCwgNTEwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIC8vIE1ha2UgdGhlbSBi
b3RoIHJlbmRlciBzdXJmYWNlcwotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBj
aGlsZDEtPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgY2hpbGQyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOwotCi0gICAgY2hpbGQxLT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKLSAgICBjaGlsZDIt
PnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0g
NTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0
Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVu
dC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJl
bmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXpl
KTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
LTMwLCAtMzAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UoY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllcjIuZ2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAs
IDQyMCwgNzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTExLCA0MjAs
IDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5n
ZXQoKSwgSW50UmVjdCgtMTAsIDQxOSwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJl
Y3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihjaGlsZDIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRl
clN1cmZhY2UoY2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIx
LmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVj
dCg0MjAsIC0yMCwgODAsIDkwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQxOSwgLTIwLCA4MCwgOTApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoNDIwLCAtMjEs
IDgwLCA5MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5n
ZXQoKSwgSW50UmVjdCg0MjAsIC0xOSwgODAsIDkwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQyMSwgLTIwLCA4MCwgOTApKSk7
Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxLmdldCgpKTsK
LSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS5nZXQoKSwg
Y2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwLCAyMCwgOTAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJv
dW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDksIDIwLCA5
MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMTAsIDE5LCA5MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTEsIDIwLCA5MCwgODApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAs
IDIxLCA5MCwgODApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2Nj
bHVzaW9uOgotICAgICAgICAgICAgICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotICAgICAgfDIwICAgICAgICAgICAgICAgICAgIHwgICAgICAgbGF5ZXIxCi0gICAgIDEwKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIDEwMCB8fCAzMCAgICAgICAgICAg
ICAgICAgfCAgICAgbGF5ZXIyICB8Ci0gICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAgIHx8IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwg
fAotICAgICAgfHwgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICB8
fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKLSAgICAgICt8LXwtLS0tLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8IDUxMAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1MTAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAg
IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAg
NTIwICAgICAgICAgICAgIHwgfAotICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyB8Ci0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK
LSAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAg
ICAgICAgICAgICAgICAgIDUxMAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5T
cGFjZURpZmZlcmVudFRyYW5zZm9ybXMsIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlm
ZmVyZW50VHJhbnNmb3Jtcyk7Ci0KLXZvaWQgb2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVy
cyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0
IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudD4gYmx1ckxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRo
Rm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudD4gb3BhY2l0eUxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gb3BhcXVlTGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJm
YWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChibHVyTGF5ZXIpOwotICAgIHBhcmVudC0+YWRk
Q2hpbGQob3BhY2l0eUxheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKG9wYXF1ZUxheWVyKTsK
LQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAgIGxheWVyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkw
KTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGJsdXJMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQo
MzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFxdWVMYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zv
cm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhvcGFjaXR5TGF5ZXIuZ2V0
KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBjcmVhdGVSb290KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCisgICAgewor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyUHRyVHlwZSBsYXllciA9IFR5cGVz
OjpjcmVhdGVDb250ZW50TGF5ZXIoKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CisgICAgICAgIHNldFByb3BlcnRpZXMo
bGF5ZXJQdHIsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CiAKKyAgICAgICAgQVNTRVJU
KCFtX3Jvb3QpOworICAgICAgICBtX3Jvb3QgPSBsYXllci5yZWxlYXNlKCk7CisgICAgICAgIHJl
dHVybiBsYXllclB0cjsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBj
cmVhdGVMYXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBj
b25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgewotICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZp
bHRlcnM7Ci0gICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCbHVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDEwLCBXZWJDb3JlOjpQZXJjZW50KSwgRmlsdGVyT3BlcmF0
aW9uOjpCTFVSKSk7Ci0gICAgICAgIGJsdXJMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyUHRyVHlwZSBsYXllciA9IFR5cGVzOjpjcmVhdGVM
YXllcigpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxh
eWVyLmdldCgpOworICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyUHRyLCB0cmFuc2Zvcm0sIHBv
c2l0aW9uLCBib3VuZHMpOworICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyLnJlbGVhc2Uo
KSk7CisgICAgICAgIHJldHVybiBsYXllclB0cjsKICAgICB9CiAKKyAgICB0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlKiBjcmVhdGVTdXJmYWNlKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBh
cmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGxheWVyID0gY3JlYXRlTGF5ZXIocGFyZW50LCB0cmFu
c2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRl
cnM7CiAgICAgICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlT
Q0FMRSkpOwotICAgICAgICBvcGFxdWVMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAg
ICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAgIHJldHVybiBsYXllcjsKICAg
ICB9CiAKKyAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogY3JlYXRlRHJhd2lu
Z0xheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCiAgICAgeworICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyUHRyVHlwZSBsYXllciA9IFR5cGVzOjpjcmVhdGVDb250ZW50TGF5
ZXIoKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyUHRy
ID0gbGF5ZXIuZ2V0KCk7CisgICAgICAgIHNldFByb3BlcnRpZXMobGF5ZXJQdHIsIHRyYW5zZm9y
bSwgcG9zaXRpb24sIGJvdW5kcyk7CisKKyAgICAgICAgaWYgKG9wYXF1ZUxheWVycykKKyAgICAg
ICAgICAgIGxheWVyUHRyLT5zZXRPcGFxdWUob3BhcXVlKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBsYXllclB0ci0+c2V0T3BhcXVlKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChvcGFx
dWUpCisgICAgICAgICAgICAgICAgbGF5ZXJQdHItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRS
ZWN0KEludFBvaW50KCksIGJvdW5kcykpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGxheWVyUHRyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIucmVsZWFzZSgpKTsKKyAgICAgICAg
cmV0dXJuIGxheWVyUHRyOworICAgIH0KKworICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBw
YXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQorICAg
IHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gY3Jl
YXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzLCBvcGFx
dWUpOwogICAgICAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgICAgIGZpbHRlcnMu
b3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFkpKTsKLSAgICAgICAgb3BhY2l0
eUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAu
NSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICAgICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7CisgICAgICAgIHJldHVybiBsYXllcjsKICAgICB9CiAKIAotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIC8vIE9wYWNpdHkg
bGF5ZXIgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKG9wYWNpdHlMYXllci5nZXQoKSk7Ci0g
ICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXIuZ2V0
KCksIG9wYWNpdHlMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQot
ICAgIC8vIEFuZCBoYXMgbm90aGluZyB0byBjb250cmlidXRlIHRvIGl0cyBwYXJlbnQgc3VyZmFj
ZS4KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKLQotICAgIC8vIE9wYXF1ZSBsYXllciB3aWxs
IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKG9wYXF1ZUxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24u
ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLmdldCgpLCBvcGFxdWVMYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLQotICAgIC8vIEFuZCBpdCBnZXRzIHRyYW5zbGF0ZWQgdG8gdGhlIHBhcmVudCBz
dXJmYWNlLgotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotCi0gICAgLy8gVGhlIGJsdXIgbGF5ZXIgbmVlZHMgdG8gdGhyb3cgYXdheSBhbnkgb2Nj
bHVzaW9uIGZyb20gb3V0c2lkZSBpdHMgc3VidHJlZS4KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHko
KSk7Ci0KLSAgICAvLyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCi0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGJsdXJMYXllci5nZXQoKSk7Ci0gICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShibHVyTGF5ZXIuZ2V0KCksIGJs
dXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBCdXQg
dGhlIG9wYXF1ZSBsYXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVudC4K
LSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLX0K
LQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
b2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRoRmlsdGVycywgb2NjbHVzaW9uSW50ZXJhY3Rpb25XaXRo
RmlsdGVycyk7Ci0KLXZvaWQgbGF5ZXJTY2lzc29yUmVjdE92ZXJUaWxlKGJvb2wgb3BhcXVlTGF5
ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVu
dExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGls
ZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
LT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBh
cmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlz
dCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAg
b2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxh
eWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkp
OwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09Q
QVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyVGlsZSwgbGF5
ZXJTY2lzc29yUmVjdE92ZXJUaWxlKTsKLQotdm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxl
KGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNo
cm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAg
cGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXll
cik7CisgICAgVGVzdENvbnRlbnRMYXllckltcGwqIGNhbGNEcmF3RXRjKFRlc3RDb250ZW50TGF5
ZXJJbXBsKiByb290KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJvb3QgPT0gbV9yb290LmdldCgp
KTsKKyAgICAgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gZHVtbXlMYXllckxpc3Q7CisgICAgICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworCisgICAgICAgIEFTU0VSVCghcm9vdC0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgcm9vdC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwor
ICAgICAgICByb290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0Q2xpcFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOworICAgICAgICBt
X3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBsLmFwcGVuZChtX3Jvb3QuZ2V0KCkpOworCisgICAg
ICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5KHJvb3QsIHJvb3QsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbCwgZHVtbXlMYXllckxpc3QsIDAsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOworICAgICAgICByZXR1cm4gcm9vdDsKKyAgICB9CiAKLSAgICBGaWx0ZXJPcGVyYXRp
b25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6
R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAg
bGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgVGVzdENvbnRlbnRMYXllckNocm9taXVt
KiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVyQ2hyb21pdW0qIHJvb3QpCisgICAgeworICAg
ICAgICBBU1NFUlQocm9vdCA9PSBtX3Jvb3QuZ2V0KCkpOworICAgICAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7CisgICAgICAgIGludCBkdW1teU1heFRl
eHR1cmVTaXplID0gNTEyOworCisgICAgICAgIEFTU0VSVCghcm9vdC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgcm9vdC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOworICAgICAgICByb290LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cm9vdC0+Ym91bmRzKCkpKTsKKyAgICAgICAgcm9vdC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCByb290LT5ib3VuZHMoKSkpOworICAgICAgICBtX3JlbmRlclN1cmZhY2VM
YXllckxpc3RDaHJvbWl1bS5hcHBlbmQobV9yb290KTsKKworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LCByb290
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZUxheWVyTGlz
dENocm9taXVtLCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgICAg
IHJldHVybiByb290OworICAgIH0KIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
cGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4IGlkZW50aXR5TWF0cml4OwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OworcHJpdmF0ZToKKyAgICB2b2lkIHNldEJhc2VQcm9wZXJ0aWVzKHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGUqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHsK
KyAgICAgICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOworICAgICAgICBsYXllci0+
c2V0U3VibGF5ZXJUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICAgICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOwor
ICAgIH0KIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNl
dENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwot
ICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7CisgICAgdm9pZCBzZXRQ
cm9wZXJ0aWVzKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzKQorICAgIHsKKyAgICAgICAgc2V0QmFzZVByb3BlcnRpZXMobGF5ZXIsIHRyYW5zZm9y
bSwgcG9zaXRpb24sIGJvdW5kcyk7CisgICAgfQogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgIHZvaWQg
c2V0UHJvcGVydGllcyhDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMpCisgICAgeworICAgICAgICBzZXRCYXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNm
b3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKIAotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2Nj
bHVzaW9uKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAgIGxheWVyLT5zZXRD
b250ZW50Qm91bmRzKGxheWVyLT5ib3VuZHMoKSk7CisgICAgfQogCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAvLyBU
aGVzZSBob2xkIG93bmVyc2hpcCBvZiB0aGUgbGF5ZXJzIGZvciB0aGUgZHVyYXRpb24gb2YgdGhl
IHRlc3QuCisgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyUHRyVHlwZSBtX3Jvb3Q7CisgICAgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdENocm9t
aXVtOworICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IG1fcmVuZGVyU3VyZmFjZUxheWVyTGlzdElt
cGw7Cit9OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisjZGVmaW5lIFJVTl9URVNUX01B
SU5fVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1l
IyNNYWluVGhyZWFkT3BhcXVlTGF5ZXJzIDogcHVibGljIENsYXNzTmFtZTxDQ09jY2x1c2lvblRy
YWNrZXJUZXN0TWFpblRocmVhZFR5cGVzLCB0cnVlPiB7IH07IFwKKyAgICBURVNUX0YoQ2xhc3NO
YW1lIyNNYWluVGhyZWFkT3BhcXVlTGF5ZXJzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9Cisj
ZGVmaW5lIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCisg
ICAgY2xhc3MgQ2xhc3NOYW1lIyNNYWluVGhyZWFkT3BhcXVlUGFpbnRzIDogcHVibGljIENsYXNz
TmFtZTxDQ09jY2x1c2lvblRyYWNrZXJUZXN0TWFpblRocmVhZFR5cGVzLCBmYWxzZT4geyB9OyBc
CisgICAgVEVTVF9GKENsYXNzTmFtZSMjTWFpblRocmVhZE9wYXF1ZVBhaW50cywgcnVuVGVzdCkg
eyBydW5NeVRlc3QoKTsgfQorCisjZGVmaW5lIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9M
QVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgY2xhc3MgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVl
TGF5ZXJzIDogcHVibGljIENsYXNzTmFtZTxDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVh
ZFR5cGVzLCB0cnVlPiB7IFwKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7
IFwKKyAgICB9OyBcCisgICAgVEVTVF9GKENsYXNzTmFtZSMjSW1wbFRocmVhZE9wYXF1ZUxheWVy
cywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQorI2RlZmluZSBSVU5fVEVTVF9JTVBMX1RIUkVB
RF9PUEFRVUVfUEFJTlRTKENsYXNzTmFtZSkgXAorICAgIGNsYXNzIENsYXNzTmFtZSMjSW1wbFRo
cmVhZE9wYXF1ZVBhaW50cyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFja2VyVGVz
dEltcGxUaHJlYWRUeXBlcywgZmFsc2U+IHsgXAorICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbDsgXAorICAgIH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1lIyNJbXBsVGhyZWFk
T3BhcXVlUGFpbnRzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisKKyNkZWZpbmUgQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX01BSU5fVEhS
RUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJFQURf
T1BBUVVFX1BBSU5UUyhDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFR
VUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX0lNUExfVEhSRUFEX09QQVFVRV9Q
QUlOVFMoQ2xhc3NOYW1lKQorCisjZGVmaW5lIE1BSU5fQU5EX0lNUExfVEhSRUFEX1RFU1QoQ2xh
c3NOYW1lKSBcCisgICAgUlVOX1RFU1RfTUFJTl9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05h
bWUpIFwKKyAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkK
KwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3JtcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1
bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50
LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAv
LyBPY2NsdWRlZCBzaW5jZSBpdHMgb3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCi0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgLy8g
VGVzdCB3aXRob3V0IGFueSBzY2lzc29ycy4KLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29y
UmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMx
LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24u
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAs
IDcwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCA3MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDI5LCA3MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA3MCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDI5LCA3
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAzMCwgMSwgNzAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzAs
IDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAz
MSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAs
IDMxLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMxLCA3
MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgy
OSwgMzEsIDcwLCA3MCkpKTsKKyAgICB9Cit9OwogCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CitBTExf
Q0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdElkZW50aXR5VHJh
bnNmb3Jtcyk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJv
b2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGls
ZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJh
bnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgbGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKKyAg
ICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMt
PmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICB0
aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLX0KKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdF9zY3JlZW5TY2lzc29yUmVjdE92ZXJUaWxlLCBzY3JlZW5TY2lzc29yUmVj
dE92ZXJUaWxlKTsKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAs
IDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkp
KTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAz
MCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDI5LCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMjksIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDI5LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMzEsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAwLCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDMxLCAzMSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjksIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzEsIDcwLCA3MCkpKTsKKyAgICB9Cit9OwogCi12
b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykKLXsK
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50
TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworQUxMX0NDT0NDTFVTSU9OVFJB
Q0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQpOwogCi0gICAgRmls
dGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJP
cGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwordGVtcGxhdGU8Y2xhc3MgVHlw
ZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5z
bGF0ZWRDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICAgICAgbGF5ZXJUcmFu
c2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRl
RHJhd2luZ0xheWVyKHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VM
YXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJM
aXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAg
cGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAg
ICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVy
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNTAsIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg0
OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTAs
IDUxLCA1MCwgNTApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSku
aXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTAsIDEsIDUw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDUw
LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDQ5LCA1MCwg
NTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwg
NDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDksIDUw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAs
IDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTEsIDQ5LCA1
MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1
MSwgNDksIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDUw
LCAxLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDUxLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA1
MSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoNTEsIDUxLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAs
IDEwMCwgNTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0
OSwgNTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDQ5LCA1MSwgNTAsIDUwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0
TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1MCwgNTAsIDUw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAsIDUwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDksIDQ5LCA1MCwg
NTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5LCA1MCwgMSksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAs
IDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwgNDksIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MSwgNDksIDUw
LCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCg1MSwgNTEsIDUwLCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUwLCA1MSwgNTAs
IDUwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEs
IDEsIDQ5KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
NDksIDUxLCA1MCwgNTApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgIH0KK307CiAKLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5z
bGF0ZWRDaGlsZCk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJv
b2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3Rh
dGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5
ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNm
b3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5
MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0
aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNo
aWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIocGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2lu
dCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
bGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAg
ICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcik7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
Ym91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2Uo
KS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQz
MCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MSwgNzApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQz
MCwgNjAsIDcxKSkpOworCisgICAgICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29y
UmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIElu
dFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVj
dCgxMCwgNDMwLCA2MSwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7CisgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7CisgICAgICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAs
IDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDEs
IDcwLCA2MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJl
Y3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMxLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworCisg
ICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5
ZXJ8OgorICAgICAgICAgICAgICAgICAgIDEwMAorICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNp
YmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLworICAgICAgICAgIHwgICAgMzAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgfAorICAgICAgICAgIHwgMzAgKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgMTAwIHwgICAgfCAgMTAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgPT0+ICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAg
ICAgICAgICAgfAorICAgICAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgNDIw
ICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICstLS0tfC0tfC0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHw1MDAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgfAorICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfDEwfAorICAgICAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tfC0tKworICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICA0OTAgICAgICAg
ICAgICAgfAorICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKKyAgICAgICAgICovCisg
ICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdENoaWxkSW5Sb3RhdGVkQ2hpbGQpOwogCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotfQordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wg
b3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdv
VGltZXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7
CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMt
PmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVl
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIC8vIHxjaGls
ZDJ8IG1ha2VzIHxwYXJlbnR8J3Mgc3VyZmFjZSBnZXQgY29uc2lkZXJlZCBieSBDQ09jY2x1c2lv
blRyYWNrZXIgZmlyc3QsIGluc3RlYWQgb2YgfGNoaWxkfCdzLiBUaGlzIGV4ZXJjaXNlcyBkaWZm
ZXJlbnQgY29kZSBpbgorICAgICAgICAvLyBsZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZSwgYXMg
dGhlIHRhcmdldCBzdXJmYWNlIGhhcyBhbHJlYWR5IGJlZW4gc2Vlbi4KKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIElu
dFNpemUoNjAsIDIwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7
CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNz
b3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKIAotVEVTVF9PUEFRVUVfQU5E
X1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJTY2lzc29yUmVjdE92
ZXJDdWxsZWRUaWxlLCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUpOworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMik7CiAK
LXZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyQ3VsbGVkVGlsZShib29sIG9wYXF1ZUxheWVycykK
LXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXll
ciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFy
ZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDMwLCA2MCwgMjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJn
ZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgx
MCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEx
LCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3
MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAs
IC0xMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0
eSgpKTsKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGl0dGxlIHBpZWNlIG5vdCBvY2NsdWRlZCBi
eSBjaGlsZDIKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5LCA0MzAsIDEsIDEwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYw
LCA3MCkpKTsKKyAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgYm90aCBzaWRlcyBvZiBjaGls
ZDIsIHNvIGl0IHdpbGwgYmUgdGhlIG9yaWdpbmFsIHJlY3QuCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoOSwgNDMwLCA2MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSkpOworICAgICAgICAvLyBUaGlzIGV4
dGVuZHMgcGFzdCB0d28gYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBhbmQgc2hvdWxkIGluY2x1
ZGVkIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lkZS4KKyAgICAgICAgLy8gVGhpcyBh
bHNvIGRlbW9uc3RyYXRlcyB0aGF0IHRoZSByZWN0IGNhbiBiZSBhcmJpdHJhcnkgYW5kIGRvZXMg
bm90IGdldCBjbGlwcGVkIHRvIHRoZSBsYXllcidzIHZpc2libGVMYXllclJlY3QoKS4KKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgMjAsIDcwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDcwKSkpOwor
ICAgICAgICAvLyBUaGlzIGV4dGVuZHMgcGFzdCB0aHJlZSBhZGphY2VudCBzaWRlcyBvZiBjaGls
ZDIsIHNvIGl0IHNob3VsZCBjb250YWluIHRoZSB1bm9jY2x1ZGVkIHBhcnRzIG9mIGVhY2ggc2lk
ZS4gVGhlIGxlZnQKKyAgICAgICAgLy8gYW5kIGJvdHRvbSBlZGdlcyBhcmUgY29tcGxldGVseSB1
bm9jY2x1ZGVkIGZvciBzb21lIHJvdy9jb2x1bW4gc28gd2UgZ2V0IGJhY2sgdGhlIG9yaWdpbmFs
IHF1ZXJ5IHJlY3QuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDYw
LCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEw
LCA0MzAsIDYwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5
LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3Qo
MTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0
MzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVj
dCgxMSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAs
IDUwMCwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRS
ZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExh
eWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNo
aWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0
MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpLmlz
RW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA4MCkpLmlzRW1wdHkoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIElu
dFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2
MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpLmlzRW1wdHko
KSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZCk7CisgICAgICAgIC8vIHxjaGlsZDJ8IHNob3VsZCBnZXQgbWVyZ2VkIHdpdGggdGhl
IHN1cmZhY2Ugd2UgYXJlIGxlYXZpbmcgbm93CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRh
cmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg5MCwgMzAsIDEwLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA2MCwgMTApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5
LCAzMCwgNjAsIDEwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA2MCwgMTApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAs
IDMxLCA2MCwgMTApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMw
LCAzOSwgNzAsIDYwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzAsIDEsIDEwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA2MCwgMTAp
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA2MCwgMSksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMSwgMTApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDYwLCAx
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKS5pc0VtcHR5KCkpOworCisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgyOSwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMjksIDQwLCA3MCwgNjApKSk7CisgICAgICAgIC8vIFRoaXMgcmVjdCBp
cyBtb3N0bHkgb2NjbHVkZWQgYnkgfGNoaWxkMnwuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoOTAsIDM5LCAxMCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgICAgICAvLyBUaGlzIHJlY3QgZXh0
ZW5kcyBwYXN0IHRvcC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgorICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDExKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7CisgICAgICAgIC8vIFRoaXMg
cmVjdCBleHRlbmRzIHBhc3QgbGVmdC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgorICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAsIDM5LCA4MCwgNjApKSk7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworCisg
ICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5
ZXJ8OgorICAgICAgICAgICAgICAgICAgIDEwMAorICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKworICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNp
YmxlIHJlZ2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLworICAgICAgICAgIHwgICAgMzAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAzMCAgIDYw
ICAgICAgICAgfCAgICB8Y2hpbGQyfDogXFxcXFwKKyAgICAgICAgICB8IDMwICsgLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIDEwMCB8ICAgIHwgIDEwICAgICAg
ICAgfCAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgID09PiAgICAgfCAgICAgfFxcXFxc
XFxcXFxcXHwgIHwxMCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgIHwxMCstLS0tLS0t
LS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tfFxcXFxc
XFxcXFxcXHwtLS0tLS0tLS0tLS0tLS0tLSsgIHwKKyAgICAgICAgICB8ICAgICsgLS0tLS0tLS0t
LS0tKyAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgKy0tLS0t
LS0tLS0tLSsvL3wgICAgIDQyMCAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8v
Ly8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8v
Ly8vLy8vLy8vL3wgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICArLS0tLXwtLXwtLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEwfCAgICAg
NzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwxMHwKKyAgICAgICAgICAgICAgICstLXwtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgNDkwICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTAwCisgICAgICAgICAqLworICAgIH0KK307CisKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lcyk7CiAKLSAgICBGaWx0
ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9w
ZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBl
cywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFj
ZVJvdGF0ZWRPZmZBeGlzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9w
YXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7Cisg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5y
b3RhdGUoOTUpOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
CisKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAg
IGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOworCisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkID0gdGhpcy0+Y3JlYXRlTGF5ZXIo
cGFyZW50LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwg
NTAwKSk7CisgICAgICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nTGF5ZXIoY2hpbGQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIEludFJlY3QgY2xpcHBl
ZExheWVySW5DaGlsZCA9IGxheWVyVHJhbnNmb3JtLm1hcFJlY3QobGF5ZXItPnZpc2libGVMYXll
clJlY3QoKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShj
aGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBF
Q1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChjbGlwcGVkTGF5ZXJJbkNoaWxkLCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlw
cGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwor
ICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVy
SW5DaGlsZC5tb3ZlKDEsIDApOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMSwg
MCk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBw
ZWRMYXllckluQ2hpbGQpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwor
ICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOworICAgICAgICBjbGlwcGVk
TGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVy
SW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAs
IDEpOworICAgICAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoMCwgMSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIGNsaXBwZWRMYXllckluQ2hpbGQp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOworICAgICAgICBjbGlwcGVk
TGF5ZXJJbkNoaWxkLm1vdmUoMCwgLTEpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihjaGlsZCk7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDc1LCA1NSwgMSwgMSkpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3NSwgNTUsIDEsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg3NSwgNTUsIDEsIDEpKSk7CisgICAg
fQorfTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1
ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXMpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1
cmVTaXplID0gNTEyOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW4g
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5z
bGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAg
ICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0
ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6
ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogbGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNo
aWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1
MDAsIDYwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAg
ICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlw
ZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3Qo
OSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgx
MCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwg
NjAsIDcwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihj
aGlsZCk7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQsIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwg
NzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgzMCwgMzksIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTAwLCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgICAgIC8qIEp1
c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxh
eWVyMnw6CisKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8v
Ly8vCisgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9u
IG9mIHxsYXllcjJ8OiBcXFxcXAorICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAg
ICAgICAgICAgICAgfAorICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tKyAgfAorICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAg
ICAgfCAgfAorICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfDYwICAgICAgICAgICAg
fCAgfAorICAgICAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAg
fAorICAgICAgICAgICArLS18LS18LS0tLS0tLS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAor
ICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAg
ICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAg
ICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAg
ICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAg
ICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfDEwfAorICAgICAgICAgICAgICB8ICArLS0t
LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tfC0tKworICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgfCA0OTAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAg
ICA0NDAKKyAgICAgICAgICovCisgICAgfQorfTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5k
KHBhcmVudCk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdFN1cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW4pOwogCi0gICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgp
LCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwordGVt
cGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzIDogcHVibGljIENDT2NjbHVzaW9u
VHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQg
cnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJh
bnNmb3JtOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAg
ICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVhdGVTdXJmYWNl
KHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwg
MTApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQyID0gdGhpcy0+
Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCks
IEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQxLCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVl
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMiA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgICAgICB0aGlz
LT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVy
U3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEw
MDAsIDEwMDApKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjIpOwogCi0gICAg
b2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2Ns
dXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4
MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwg
NzAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIElu
dFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAs
IDcwLCA4MSkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJl
Y3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50
UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MTksIDcw
LCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwg
SW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7CisgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEw
MDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQy
KTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIs
IGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworCisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3Qo
LTEwLCA0MzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDEsIEludFJlY3QoLTExLCA0MzAsIDgwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoLTEwLCA0MjksIDgwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEsIElu
dFJlY3QoLTEwLCA0MzAsIDgxLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDEsIEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MSkpKTsKKworICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjAsIDIwLCA4MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
Ym91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAsIDIwLCA4MCwgODApKSk7CisKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwg
MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjksIDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAxOSwgNzAsIDgwKSkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAs
IDMwLCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDE5LCAzMCwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMCwgMjksIDgwLCA3MCkpKTsKKwor
ICAgICAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uOgorICAgICAg
ICAgICAgICAgICAgIDEwMAorICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICAgICAgfCAgICAyMCAgICAgICAgICAgICAgIHwgICAgICAgbGF5ZXIxCisgICAgICAgICAgfCAg
MzArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIDEwMCB8ICAzMHwg
ICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICAgICAgfAorICAgICAgICAgIHwyMCstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgfCAgfCB8ICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICB8ICB8IHwgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgKy0tfC18LS0tLS0tLS0tLS0tLS0tLSsgICAg
ICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfCA1MTAKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAor
ICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAg
ICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAg
ICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtKworICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA1MTAKKyAgICAgICAgICovCisgICAgfQorfTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwor
QUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5ncyk7CiAKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMs
IGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBw
aW5nU3VyZmFjZVNpYmxpbmdzV2l0aFR3b1RyYW5zZm9ybXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQxVHJh
bnNmb3JtOworICAgICAgICBjaGlsZDFUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAg
ICAgICAgY2hpbGQxVHJhbnNmb3JtLnJvdGF0ZSgtOTApOworICAgICAgICBjaGlsZDFUcmFuc2Zv
cm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNoaWxkMlRyYW5zZm9ybTsKKyAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAs
IDI1MCk7CisgICAgICAgIGNoaWxkMlRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBjaGls
ZDJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOworCisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNoaWxkMSA9IHRoaXMtPmNyZWF0ZVN1cmZh
Y2UocGFyZW50LCBjaGlsZDFUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDIwKSwgSW50U2l6ZSgx
MCwgMTApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQyID0gdGhp
cy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkMlRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwg
NDApLCBJbnRTaXplKDEwLCAxMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogbGF5ZXIxID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMSwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMjApLCBJbnRTaXplKDUxMCwgNTEwKSwg
dHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllcjIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQyLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlKTsKKyAgICAgICAg
dGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMzAsIC0zMCwgMTAwMCwg
MTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIyKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAz
MCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0
MjAsIDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMSwgNDIwLCA3
MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MSwgODApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwg
NDIwLCA3MCwgODEpKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGNoaWxkMik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZh
Y2UoY2hpbGQyLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5s
ZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIx
KTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDIwLCAtMjAsIDgwLCA5MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLX0K
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0
MjAsIC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkMSwgSW50UmVjdCg0MTksIC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAsIC0yMSwgODAsIDkw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50
UmVjdCg0MjAsIC0xOSwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOwogCi1URVNUX09Q
QVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9zY3JlZW5TY2lz
c29yUmVjdE92ZXJDdWxsZWRUaWxlLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKTsK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMSk7CisgICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQxLCBjaGlsZDEt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLXZvaWQgbGF5ZXJTY2lzc29yUmVj
dE92ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAg
ICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50Lmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkp
OwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2Us
IG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDAp
LCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEy
OwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xp
cFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5n
ZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsK
LQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7
Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgx
MDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQot
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAx
MDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLX0K
LQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rf
bGF5ZXJTY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIGxheWVyU2Npc3NvclJlY3RPdmVyUGFy
dGlhbFRpbGVzKTsKLQotdm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMoYm9v
bCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdz
Q29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJl
bnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsK
LQotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMo
KS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAu
NSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0
OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1
bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOwotCi0gICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
LQotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlh
bFRpbGVzLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJQYXJ0aWFsVGlsZXMpOwotCi12b2lkIGxheWVy
U2Npc3NvclJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5l
dyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRl
UmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAg
IHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJz
OwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkp
OwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBm
YWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUg
PSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5z
ZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsK
LSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFy
ZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNp
emUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQo
KSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAx
MDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1w
dHkoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRy
YWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcywgbGF5ZXJTY2lzc29yUmVjdE92
ZXJOb1RpbGVzKTsKLQotdm9pZCBzY3JlZW5TY2lzc29yUmVjdE92ZXJOb1RpbGVzKGJvb2wgb3Bh
cXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0
cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+
IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5h
ZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAg
ICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBw
ZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZp
bHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMo
ZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQot
ICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAg
ICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBw
ZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxh
eWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwotCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAy
MDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxl
cywgc2NyZWVuU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk7Ci0KLXZvaWQgbGF5ZXJTY2lzc29yUmVj
dEZvckxheWVyT2ZmT3JpZ2luKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllcik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAs
IDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwg
MjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3Vy
ZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg5LCAyMCwgOTAsIDgw
KSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgxMCwgMTksIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTEsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAyMSwgOTAsIDgw
KSkpOworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246
CisgICAgICAgICAgICAgICAgICAgICAgMTAwCisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKworICAgICAgICAgICAgfDIwICAgICAgICAgICAgICAgICAgIHwgICAgICAgbGF5ZXIx
CisgICAgICAgICAgIDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
ICAgIDEwMCB8fCAzMCAgICAgICAgICAgICAgICAgfCAgICAgbGF5ZXIyICB8CisgICAgICAgICAg
ICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgIHx8
IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgfHwgfCAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8ICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICt8LXwtLS0tLS0tLS0t
LS0tLS0tLS0rICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8IDUxMAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MTAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgNTIwICAgICAgICAgICAgIHwg
fAorICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8Cisg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUxMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAg
RmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVu
ZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0
ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxMX0NDT0NDTFVTSU9O
VFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJs
aW5nc1dpdGhUd29UcmFuc2Zvcm1zKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5
ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAwLCAxMDApLCBJ
bnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKK3RlbXBsYXRlPGNsYXNzIFR5
cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0
ZXJzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4g
eworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBsYXllclRyYW5zZm9ybS50
cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwor
ICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1
bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBibHVyTGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXpl
KDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBvcGFjaXR5TGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXll
clRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBvcGFxdWVMYXllciA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBv
aW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKIAotICAgIHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxp
c3QuYXBwZW5kKHBhcmVudCk7CisgICAgICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShMZW5ndGgoMTAsIFdlYkNvcmU6OlBlcmNlbnQpLCBGaWx0ZXJPcGVyYXRpb246OkJMVVIp
KTsKKyAgICAgICAgYmx1ckxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFy
ZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNp
emUpOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5jbGVhcigpOworICAgICAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKKyAgICAgICAg
b3BhcXVlTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgZmls
dGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgICAgICBvcGFjaXR5TGF5ZXItPnNldEZp
bHRlcnMoZmlsdGVycyk7CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNl
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOwogCi0gICAgLy8gVGhpcyBsYXllciBpcyB0cmFuc2xhdGVkIHdoZW4gZHJhd24gaW50byBp
dHMgdGFyZ2V0LiBTbyBpZiB0aGUgc2Npc3NvciByZWN0IGdpdmVuIGZyb20gdGhlIHRhcmdldCBz
dXJmYWNlCi0gICAgLy8gaXMgbm90IGluIHRoYXQgdGFyZ2V0IHNwYWNlLCB0aGVuIGFmdGVyIHRy
YW5zbGF0aW5nIHRoZXNlIHF1ZXJ5IHJlY3RzIGludG8gdGhlIHRhcmdldCwgdGhleSB3aWxsIGZh
bGwgb3V0c2lkZQotICAgIC8vIHRoZSBzY2lzc29yIGFuZCBiZSBjb25zaWRlcmVkIG9jY2x1ZGVk
LgotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLX0KKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4sIGxheWVyU2Npc3Nv
clJlY3RGb3JMYXllck9mZk9yaWdpbik7CisgICAgICAgIC8vIE9wYWNpdHkgbGF5ZXIgd29uJ3Qg
Y29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIob3BhY2l0eUxheWVyKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXIsIG9wYWNpdHlM
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKIAotdm9pZCBkYW1hZ2VSZWN0T3ZlclRpbGUoYm9vbCBv
cGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuaXNFbXB0eSgpKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAg
ICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKKyAgICAgICAgLy8gQW5kIGhhcyBub3RoaW5nIHRvIGNvbnRyaWJ1dGUgdG8g
aXRzIHBhcmVudCBzdXJmYWNlLgorICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkp
OwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5
ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9w
YXF1ZUxheWVycyk7CisgICAgICAgIC8vIE9wYXF1ZSBsYXllciB3aWxsIGNvbnRyaWJ1dGUgdG8g
b2NjbHVzaW9uLgorICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKG9w
YXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIob3BhcXVlTGF5ZXIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKG9wYXF1ZUxheWVyLCBvcGFxdWVMYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDQzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgcGFyZW50
LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJ
bnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAgLy8gQW5kIGl0IGdldHMgdHJhbnNsYXRl
ZCB0byB0aGUgcGFyZW50IHN1cmZhY2UuCisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICAvLyBU
aGUgYmx1ciBsYXllciBuZWVkcyB0byB0aHJvdyBhd2F5IGFueSBvY2NsdXNpb24gZnJvbSBvdXRz
aWRlIGl0cyBzdWJ0cmVlLgorICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGJsdXJMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsK
KworICAgICAgICAvLyBBbmQgaXQgd29uJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAg
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihibHVyTGF5ZXIpOworICAgICAg
ICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGJsdXJMYXllciwgYmx1ckxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOworCisgICAgICAg
IC8vIEJ1dCB0aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUg
cGFyZW50LgorICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgfQorfTsKIAotICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQo
KSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKK0FM
TF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVycyk7
CiAKLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSk7Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91
dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIHRo
aXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tl
ckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1
cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAw
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+
cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7
CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAs
IDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE91dHNpZGVDaGlsZCk7CiAK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9w
YXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVj
dE91dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFx
dWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3Jl
YXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAg
IHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAg
ICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAx
MDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkp
OworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAw
LCAzMDApKSk7CisgICAgfQorfTsKIAotICAgIC8vIE91dHNpZGUgdGhlIGxheWVyJ3MgY2xpcCBy
ZWN0LgotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkKTsKIAot
ICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5
ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQg
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citw
cm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3Jl
YXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJh
d0V0YyhwYXJlbnQpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBUZXN0RGFtYWdl
Q2xpZW50PHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVj
dCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAK
LSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLX0KKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMjAw
LCAyMDApKS5pc0VtcHR5KCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclRpbGUsIGRhbWFnZVJlY3RPdmVyVGls
ZSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7Cisg
ICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7CiAKLXZvaWQgZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKGJvb2wgb3BhcXVl
TGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBh
cmVudExheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQo
KSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRD
aGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7CisgICAgICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Cisg
ICAgfQorfTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXll
ci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsK
K0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdl
UmVjdE91dHNpZGVDaGlsZCk7CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29s
IG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JS
ZWN0T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1
ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVh
dGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMw
MCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXll
ciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAg
dGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVy
U3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAg
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChsYXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgx
MDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwg
MTAwLCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwor
ICAgIH0KK307CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlM
YXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CitBTExfQ0NPQ0NM
VVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RP
dmVyQ2hpbGQpOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKK3RlbXBsYXRl
PGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tl
clRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15
VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
cGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29u
dGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQs
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlw
ZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgw
LCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJl
bnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworQUxMX0NDT0ND
TFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVj
dE92ZXJDaGlsZCk7CiAKLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBl
cywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdl
UmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFx
dWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3Jl
YXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5
ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAg
IHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBUZXN0RGFtYWdl
Q2xpZW50PHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gZGFtYWdlKEZsb2F0UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdl
dFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2
ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIw
MCwgMjAwKSkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEw
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBvY2NsdXNp
b24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLX0KK0FMTF9DQ09DQ0xVU0lP
TlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCk7
CiAKLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0
X2RhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSwgZGFtYWdlUmVjdE92ZXJDdWxsZWRUaWxlKTsKK3Rl
bXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9u
VHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAg
IHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJm
YWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsK
KworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDMwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMjAw
LCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIH0KK307CiAKLXZvaWQgZGFtYWdlUmVjdE92
ZXJQYXJ0aWFsVGlsZXMoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBw
YXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9w
YXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0
cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwot
Ci0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50
UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQo
KSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQot
ICAgIFRlc3REYW1hZ2VDbGllbnQgZGFtYWdlKEZsb2F0UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7
Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSwgJmRhbWFnZSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgp
KTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAsIDIw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwg
NTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAs
IDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
fQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dF9kYW1hZ2VSZWN0T3ZlclBhcnRpYWxUaWxlcywgZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMp
OwotCi12b2lkIGRhbWFnZVJlY3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVu
dC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5
ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9u
cyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdS
QVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRy
PExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4
dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAg
cGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91
bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0g
ICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2li
aWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4
VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0KDUw
MCwgNTAwLCAxMDAsIDEwMCkpOwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwotCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlz
RW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEw
MCwgMTAwKSkuaXNFbXB0eSgpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVF
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJOb1RpbGVzLCBkYW1hZ2VSZWN0
T3Zlck5vVGlsZXMpOwotCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9wYXF1ZUNvbnRl
bnRzUmVnaW9uRW1wdHkpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50
LT5hZGRDaGlsZChsYXllcik7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNp
b25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQpOwogCi0gICAgRmls
dGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJP
cGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwor
dGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250
ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdT
dXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50
KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxh
eWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAs
IDEwMCwgMTAwLCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCA1MCwgNTAsIDUwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDMw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwg
MTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjAw
LCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwg
MjAwLCAxMDAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgIH0KK307CiAKLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxk
KTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlz
dDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKK3RlbXBsYXRlPGNsYXNzIFR5
cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1h
Z2VSZWN0UGFydGx5T3ZlckNoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlw
ZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAg
ICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0
aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsK
KyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgIHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
YXBwZW5kKHBhcmVudCk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSwgJmRhbWFnZSk7CiAKLSAgICBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7CisgICAgICAg
IG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDE1
MCwgMTUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXllciwgSW50UmVjdCgw
LCAwLCAyMDAsIDIwMCkpKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCAyMDAs
IDIwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CiAKLSAgICAvLyBPY2NsdWRlZCBzaW5jZSBpdHMg
b3V0c2lkZSB0aGUgc3VyZmFjZSBib3VuZHMuCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKK0FMTF9D
Q09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdFBh
cnRseU92ZXJDaGlsZCk7CiAKLSAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNjaXNzb3JzLgotICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJT
Y2lzc29yUmVjdCgpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyTm90aGluZyA6
IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3By
b3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBU
eXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3
RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7CisKKyAgICAg
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFj
ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAw
LCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKS5p
c0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAK
LSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAg
IG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVz
dExheWVyU2Npc3NvclJlY3RPdmVyTm90aGluZyk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLX0KK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJOb3RoaW5nIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVj
dGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURy
YXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMo
cGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0
TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMw
MCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1w
dHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotVEVT
VChDQ09jY2x1c2lvblRyYWNrZXJUZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KQot
ewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIp
OworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3Jl
ZW5TY2lzc29yUmVjdE92ZXJOb3RoaW5nKTsKIAotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIGZhbHNlLCBmYWxzZSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVM
YXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJOb3RoaW5n
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewor
cHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBk
dW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICAg
ICAgVGVzdERhbWFnZUNsaWVudDx0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IGRh
bWFnZShGbG9hdFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVz
OjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCks
ICZkYW1hZ2UpOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVu
dC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwg
aWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBk
dW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChsYXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpLmlzRW1wdHko
KSk7CiAKLSAgICB7Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQs
IEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKK0FM
TF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJOb3RoaW5nKTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOwordGVtcGxhdGU8Y2xh
c3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dExheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbiA6IHB1YmxpYyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1
bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwg
MjAwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgLy8gVGhpcyBsYXllciBpcyB0
cmFuc2xhdGVkIHdoZW4gZHJhd24gaW50byBpdHMgdGFyZ2V0LiBTbyBpZiB0aGUgc2Npc3NvciBy
ZWN0IGdpdmVuIGZyb20gdGhlIHRhcmdldCBzdXJmYWNlCisgICAgICAgIC8vIGlzIG5vdCBpbiB0
aGF0IHRhcmdldCBzcGFjZSwgdGhlbiBhZnRlciB0cmFuc2xhdGluZyB0aGVzZSBxdWVyeSByZWN0
cyBpbnRvIHRoZSB0YXJnZXQsIHRoZXkgd2lsbCBmYWxsIG91dHNpZGUKKyAgICAgICAgLy8gdGhl
IHNjaXNzb3IgYW5kIGJlIGNvbnNpZGVyZWQgb2NjbHVkZWQuCisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKICAgICB9Cit9OworCitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25U
cmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7CiAKK3RlbXBsYXRl
PGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tl
clRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tl
clRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlU
ZXN0KCkKICAgICB7Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRS
ZWN0KEludFJlY3QoMjAsIDIwLCAxODAsIDE4MCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6
Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3
aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDIwMCwgMjAwKSwgZmFsc2UpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0Yyhw
YXJlbnQpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFz
ZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFj
ZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsK
IAotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CiAKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgLy8gT2NjbHVkZWQgc2luY2UgaXRzIG91dHNpZGUgdGhlIHN1cmZhY2UgYm91bmRz
LgorICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3Qo
MjAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIC8vIFRlc3Qgd2l0aG91dCBhbnkgc2Np
c3NvcnMuCisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpLmlzRW1w
dHkoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CiAgICAgfQorfTsKKworTUFJTl9BTkRfSU1QTF9USFJF
QURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eSk7
CiAKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5IDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgor
ICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgICAgICBsYXllci0+
c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoMTUwLCAxNTAsIDEwMCwgMTAwKSk7CisgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVS
b290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKKyAgICAgICAg
dGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICAgICAgeworICAg
ICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlQ29udGVu
dHNSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKIAotICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDI1MCwgMjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAg
ICAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKworICAg
ICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNp
emUoKSk7CisKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRl
bnRzUmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKKworICAgICAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisg
ICAgICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEyMCwgMTIwLCAxODAsIDE4MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKIAotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5k
ZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAg
ICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRlbnRzUmVjdChJbnRSZWN0KDE1MCwgMTUwLCAx
MDAsIDEwMCkpOworCisgICAgICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisKKyAgICAgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjUwLCAyNTAsIDUwLCA1MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkuYm91bmRzKCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKyAgICAgICAgfQogICAgIH0KLX0KK307CisKK01BSU5fQU5EX0lNUExfVEhSRUFEX1RF
U1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9uTm9uRW1wdHkpOwog
CiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131261</attachid>
            <date>2012-03-11 17:16:08 -0700</date>
            <delta_ts>2012-03-12 08:50:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80613-20120311201606.patch</filename>
            <type>text/plain</type>
            <size>226707</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDY2Y2Q0MzJlNDdiOWRmZDZmYzczODU1ZTI1NDA2OGJhNzg4NTI5YWMuLmNlYjZkNjNiZWMzYzVk
ZDVjOTQwYmI1ZmUwMGJhMGU0MjdlN2Q1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMTItMDMtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDbGVhbiB1cCBjdWxsaW5nIHRlc3RzIGFuZCB0
ZW1wbGF0aXplIHRvIHRlc3QgaW1wbCBjb25zdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDYxMworCisgICAgICAgIFJldmlld2VkIGJ5IEFk
cmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckNocm9taXVtOjpUZXN0Q29u
dGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckNo
cm9taXVtOjpvcGFxdWVDb250ZW50c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29u
dGVudExheWVyQ2hyb21pdW06OnNldE9wYXF1ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChUZXN0
Q29udGVudExheWVyQ2hyb21pdW0pOgorICAgICAgICAoVGVzdENvbnRlbnRMYXllckltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdENvbnRlbnRMYXllckltcGw6OlRlc3RDb250ZW50TGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDb250ZW50TGF5ZXJJbXBsOjpvcGFxdWVDb250
ZW50c1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q29udGVudExheWVySW1wbDo6c2V0
T3BhcXVlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpvY2NsdXNp
b25JblNjcmVlblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJCYXNlOjpvY2NsdXNpb25JblRhcmdldFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnNldE9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnNldE9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
QmFzZTo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0RGFtYWdlQ2xpZW50OjpkYW1hZ2VSZWN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3RNYWluVGhyZWFkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdE1haW5UaHJlYWRUeXBlczo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBlczo6Y3JlYXRlQ29udGVudExh
eWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFkVHlwZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlczo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdElt
cGxUaHJlYWRUeXBlczo6Y3JlYXRlQ29udGVudExheWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6
VGVhckRvd24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3Jl
YXRlUm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVh
dGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVh
dGVTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3Q6OmNy
ZWF0ZURyYXdpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0OjpjcmVhdGVEcmF3aW5nU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0OjpjYWxjRHJhd0V0Yyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0OjpzZXRCYXNlUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0OjpzZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdElkZW50aXR5VHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFuc2xhdGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAg
ICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpy
dW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFyZ2V0VHdv
VGltZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFZpc2l0VGFy
Z2V0VHdvVGltZXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U3VyZmFjZVJvdGF0ZWRPZmZBeGlzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik6CisgICAgICAg
IChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGls
ZHJlbjo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3M6OnJ1bk15VGVzdCk6CisgICAgICAgIChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJh
bnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3Zlcmxh
cHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hp
bGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Np
c3NvclJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxkOjpydW5NeVRlc3QpOgorICAgICAg
ICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQ6
OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29y
UmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGF5ZXJTY2lzc29yUmVjdE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyQ2hpbGQ6OnJ1
bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdE92ZXJD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVj
dE92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RM
YXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0UGFydGx5T3ZlckNoaWxkOjpydW5NeVRl
c3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0UGFy
dGx5T3ZlckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RT
Y3JlZW5TY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKEND
T2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxk
OjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3Nv
clJlY3RPdmVyTm90aGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJOb3RoaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5vdGhpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3Zlck5v
dGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdl
UmVjdE92ZXJOb3RoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3REYW1hZ2VSZWN0T3Zlck5vdGhpbmc6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lv
blRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJP
ZmZPcmlnaW46OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3Bh
cXVlQ29udGVudHNSZWdpb25FbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRy
YWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eTo6cnVuTXlUZXN0KToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lv
bk5vbkVtcHR5OjpydW5NeVRlc3QpOgorCiAyMDEyLTAzLTExICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtjaHJvbWl1bV0g
YWRkIHByb3Zpc2lvbmFsIHRlc3QgZm9yIHRoZSBkb3duc3RyZWFtIHNhbml0eSB0ZXN0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdC5jcHAKaW5kZXggMjZkNTI1MjNiZTEzNGMyZWZjOTc4YjM0YTBiZDRjMzMyMDUwOWNhYy4u
ZWJhZjA4OWU5ZGVkM2I0M2EwM2VhNmMwMjI2MWYyNzQ0NDdkYzRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3Bw
CkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAi
Y2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIK
KyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAKICNpbmNsdWRlIDxnbW9jay9n
bW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CkBAIC00NSw4NCArNDcsNjYgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50IDogcHVibGljIExheWVyQ2hyb21pdW0geworY2xhc3Mg
VGVzdENvbnRlbnRMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGlj
OgotICAgIExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkKLSAgICAgICAgOiBM
YXllckNocm9taXVtKCkKLSAgICB7Ci0gICAgfQorICAgIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1
bSgpIDogTGF5ZXJDaHJvbWl1bSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFJlZ2lvbiBvcGFxdWVDb250
ZW50c1JlZ2lvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKG1f
b3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOwotICAgIH0KLQotICAgIHZvaWQg
c2V0T3BhcXVlUGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIG9wYXF1ZVBhaW50UmVjdCkgeyBtX29w
YXF1ZVBhaW50UmVjdCA9IG9wYXF1ZVBhaW50UmVjdDsgfQorICAgIHZpcnR1YWwgUmVnaW9uIG9w
YXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVl
Q29udGVudHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOyB9CisgICAgdm9pZCBzZXRPcGFxdWVD
b250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVl
Q29udGVudHNSZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgSW50
UmVjdCBtX29wYXF1ZVBhaW50UmVjdDsKKyAgICBJbnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0
OwogfTsKIAotdm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKExheWVyQ2hyb21pdW0q
IGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQotewotICAgIGxheWVyLT5z
ZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgbGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQoMCwgMCkpOwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgbGF5
ZXItPnNldEJvdW5kcyhib3VuZHMpOwotfQotCi12b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcoTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQqIGxheWVyLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSwgYm9vbCBvcGFxdWVMYXllcnMp
Ci17Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllciwgdHJhbnNmb3JtLCBw
b3NpdGlvbiwgYm91bmRzKTsKLSAgICBpZiAob3BhcXVlTGF5ZXJzKQotICAgICAgICBsYXllci0+
c2V0T3BhcXVlKG9wYXF1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGxheWVyLT5zZXRPcGFxdWUo
ZmFsc2UpOwotICAgICAgICBpZiAob3BhcXVlKQotICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1
ZVBhaW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGJvdW5kcykpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBsYXllci0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7Ci0gICAgfQot
fQorY2xhc3MgVGVzdENvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgeworcHVi
bGljOgorICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKGludCBpZCkgOiBDQ0xheWVySW1wbChpZCkg
eyBzZXREcmF3c0NvbnRlbnQodHJ1ZSk7IH0KKworICAgIHZpcnR1YWwgUmVnaW9uIG9wYXF1ZUNv
bnRlbnRzUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gaW50ZXJzZWN0aW9uKG1fb3BhcXVlQ29udGVu
dHNSZWN0LCB2aXNpYmxlTGF5ZXJSZWN0KCkpOyB9CisgICAgdm9pZCBzZXRPcGFxdWVDb250ZW50
c1JlY3QoY29uc3QgSW50UmVjdCYgb3BhcXVlQ29udGVudHNSZWN0KSB7IG1fb3BhcXVlQ29udGVu
dHNSZWN0ID0gb3BhcXVlQ29udGVudHNSZWN0OyB9Citwcml2YXRlOgorICAgIEludFJlY3QgbV9v
cGFxdWVDb250ZW50c1JlY3Q7Cit9OwogCiAvLyBBIHN1YmNsYXNzIHRvIGV4cG9zZSB0aGUgdG90
YWwgY3VycmVudCBvY2NsdXNpb24uCi1jbGFzcyBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5
cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlPgorY2xhc3MgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2UgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZh
Y2VUeXBlPiB7CiBwdWJsaWM6Ci0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0IHNj
cmVlblNjaXNzb3JSZWN0KQotICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlcihzY3JlZW5TY2lz
c29yUmVjdCkKKyAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZShJbnRSZWN0IHNjcmVlblNj
aXNzb3JSZWN0KQorICAgICAgICA6IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBS
ZW5kZXJTdXJmYWNlVHlwZT4oc2NyZWVuU2Npc3NvclJlY3QpCiAgICAgICAgICwgbV9vdmVycmlk
ZUxheWVyU2Npc3NvclJlY3QoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXIoSW50UmVjdCBzY3JlZW5TY2lzc29yUmVjdCwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyRGFtYWdlQ2xpZW50KiBkYW1hZ2VDbGllbnQpCi0gICAgICAgIDogQ0NPY2NsdXNpb25U
cmFja2VyKHNjcmVlblNjaXNzb3JSZWN0LCBkYW1hZ2VDbGllbnQpCisgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2UoSW50UmVjdCBzY3JlZW5TY2lzc29yUmVjdCwgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VyRGFtYWdlQ2xpZW50QmFzZTxSZW5kZXJTdXJmYWNlVHlwZT4qIGRhbWFnZUNsaWVu
dCkKKyAgICAgICAgOiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+KHNjcmVlblNjaXNzb3JSZWN0LCBkYW1hZ2VDbGllbnQpCiAgICAgICAgICwgbV9v
dmVycmlkZUxheWVyU2Npc3NvclJlY3QoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIFJlZ2lv
biBvY2NsdXNpb25JblNjcmVlblNwYWNlKCkgY29uc3QgeyByZXR1cm4gQ0NPY2NsdXNpb25UcmFj
a2VyOjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbjsgfQotICAgIFJlZ2lvbiBvY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNrZXI6
Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0OyB9CisgICAgUmVnaW9uIG9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKSBjb25zdCB7IHJldHVybiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNj
cmVlbjsgfQorICAgIFJlZ2lvbiBvY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJl
dHVybiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
OjptX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQogCi0gICAgdm9pZCBzZXRPY2Ns
dXNpb25JblNjcmVlblNwYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IENDT2NjbHVzaW9uVHJh
Y2tlcjo6bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSByZWdpb247IH0KLSAgICB2
b2lkIHNldE9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZShjb25zdCBSZWdpb24mIHJlZ2lvbikgeyBD
Q09jY2x1c2lvblRyYWNrZXI6Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVn
aW9uOyB9CisgICAgdm9pZCBzZXRPY2NsdXNpb25JblNjcmVlblNwYWNlKGNvbnN0IFJlZ2lvbiYg
cmVnaW9uKSB7IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46Om1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gcmVnaW9uOyB9CisgICAg
dm9pZCBzZXRPY2NsdXNpb25JblRhcmdldFN1cmZhY2UoY29uc3QgUmVnaW9uJiByZWdpb24pIHsg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQgPSByZWdpb247IH0KIAogICAgIHZvaWQgc2V0
TGF5ZXJTY2lzc29yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7IG1fb3ZlcnJpZGVMYXllclNj
aXNzb3JSZWN0ID0gdHJ1ZTsgbV9sYXllclNjaXNzb3JSZWN0ID0gcmVjdDt9CiAgICAgdm9pZCB1
c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpIHsgbV9vdmVycmlkZUxheWVyU2Npc3NvclJlY3Qg
PSBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBJbnRSZWN0IGxheWVyU2Npc3Nv
clJlY3RJblRhcmdldFN1cmZhY2UoY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID8gbV9sYXllclNjaXNzb3JSZWN0IDog
Q0NPY2NsdXNpb25UcmFja2VyOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVy
KTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNl
KGNvbnN0IExheWVyVHlwZSogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVMYXllclNj
aXNzb3JSZWN0ID8gbV9sYXllclNjaXNzb3JSZWN0IDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3Vy
ZmFjZShsYXllcik7IH0KIAogcHJpdmF0ZToKICAgICBib29sIG1fb3ZlcnJpZGVMYXllclNjaXNz
b3JSZWN0OwogICAgIEludFJlY3QgbV9sYXllclNjaXNzb3JSZWN0OwogfTsKIAotY2xhc3MgVGVz
dERhbWFnZUNsaWVudCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJEYW1hZ2VDbGllbnQgewor
dGVtcGxhdGU8dHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CitjbGFzcyBUZXN0RGFtYWdlQ2xp
ZW50IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckRhbWFnZUNsaWVudEJhc2U8UmVuZGVyU3Vy
ZmFjZVR5cGU+IHsKIHB1YmxpYzoKICAgICAvLyBUaGUgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBG
bG9hdFJlY3QgZGFtYWdlUmVjdChjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qKSBjb25zdCB7
IHJldHVybiBtX2RhbWFnZVJlY3Q7IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBkYW1hZ2VSZWN0
KGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKikgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VSZWN0OyB9
CiAKICAgICAvLyBUZXN0aW5nIHN0dWZmCiAgICAgVGVzdERhbWFnZUNsaWVudChjb25zdCBGbG9h
dFJlY3QmIGRhbWFnZVJlY3QpIDogbV9kYW1hZ2VSZWN0KGRhbWFnZVJlY3QpIHsgfQpAQCAtMTMy
LDIwODEgKzExNiwxNjAwIEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGFtYWdlUmVjdDsK
IH07CiAKLSNkZWZpbmUgVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKEZVTExURVNUTkFN
RSwgU0hPUlRURVNUTkFNRSkgXAotICAgIFRFU1QoRlVMTFRFU1ROQU1FLCBvcGFxdWVMYXllcikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
U0hPUlRURVNUTkFNRSh0cnVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgVEVTVChGVUxMVEVTVE5BTUUsIG9wYXF1ZVBhaW50UmVj
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBT
SE9SVFRFU1ROQU1FKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCitzdHJ1Y3QgQ0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBlcyB7CisgICAg
dHlwZWRlZiBMYXllckNocm9taXVtIExheWVyVHlwZTsKKyAgICB0eXBlZGVmIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bSBSZW5kZXJTdXJmYWNlVHlwZTsKKyAgICB0eXBlZGVmIFRlc3RDb250ZW50TGF5
ZXJDaHJvbWl1bSBDb250ZW50TGF5ZXJUeXBlOworICAgIHR5cGVkZWYgUmVmUHRyPExheWVyQ2hy
b21pdW0+IExheWVyUHRyVHlwZTsKKyAgICB0eXBlZGVmIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gUGFzc0xheWVyUHRyVHlwZTsKKyAgICB0eXBlZGVmIFJlZlB0cjxDb250ZW50TGF5ZXJUeXBl
PiBDb250ZW50TGF5ZXJQdHJUeXBlOworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJUeXBlPiBQYXNzQ29udGVudExheWVyUHRyVHlwZTsKKworICAgIHN0YXRpYyBQYXNzTGF5ZXJQ
dHJUeXBlIGNyZWF0ZUxheWVyKCkgeyByZXR1cm4gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7IH0K
KyAgICBzdGF0aWMgUGFzc0NvbnRlbnRMYXllclB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclR5cGUoKSk7IH0KK307CisKK3N0cnVj
dCBDQ09jY2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzIHsKKyAgICB0eXBlZGVmIEND
TGF5ZXJJbXBsIExheWVyVHlwZTsKKyAgICB0eXBlZGVmIENDUmVuZGVyU3VyZmFjZSBSZW5kZXJT
dXJmYWNlVHlwZTsKKyAgICB0eXBlZGVmIFRlc3RDb250ZW50TGF5ZXJJbXBsIENvbnRlbnRMYXll
clR5cGU7CisgICAgdHlwZWRlZiBPd25QdHI8Q0NMYXllckltcGw+IExheWVyUHRyVHlwZTsKKyAg
ICB0eXBlZGVmIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IFBhc3NMYXllclB0clR5cGU7CisgICAg
dHlwZWRlZiBPd25QdHI8Q29udGVudExheWVyVHlwZT4gQ29udGVudExheWVyUHRyVHlwZTsKKyAg
ICB0eXBlZGVmIFBhc3NPd25QdHI8Q29udGVudExheWVyVHlwZT4gUGFzc0NvbnRlbnRMYXllclB0
clR5cGU7CisKKyAgICBzdGF0aWMgUGFzc0xheWVyUHRyVHlwZSBjcmVhdGVMYXllcigpIHsgcmV0
dXJuIENDTGF5ZXJJbXBsOjpjcmVhdGUobmV4dENDTGF5ZXJJbXBsSWQrKyk7IH0KKyAgICBzdGF0
aWMgUGFzc0NvbnRlbnRMYXllclB0clR5cGUgY3JlYXRlQ29udGVudExheWVyKCkgeyByZXR1cm4g
YWRvcHRQdHIobmV3IENvbnRlbnRMYXllclR5cGUobmV4dENDTGF5ZXJJbXBsSWQrKykpOyB9Cisg
ICAgc3RhdGljIGludCBuZXh0Q0NMYXllckltcGxJZDsKK307CisKK2ludCBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzOjpuZXh0Q0NMYXllckltcGxJZCA9IDA7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9u
VHJhY2tlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citwcm90ZWN0ZWQ6CisgICAgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdCgpIDogdGVzdGluZzo6VGVzdCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIHJ1bk15VGVzdCgpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisg
ICAgeworICAgICAgICBtX3Jvb3QuY2xlYXIoKTsKKyAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0Q2hyb21pdW0uY2xlYXIoKTsKKyAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
SW1wbC5jbGVhcigpOwogICAgIH0KIAotdm9pZCBsYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbihi
b29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQgdGhlIHJpZ2h0IHRy
YW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAg
cGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAw
KSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMo
KS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkp
KTsKLQotICAgIG9jY2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMw
LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgz
MSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjksIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMjksIDI5LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcw
KSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb24pOwotCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9uKGJv
b2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJh
bnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERy
YXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBw
YXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVy
VHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Ci0gICAg
bGF5ZXJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUo
LTI1MCwgLTI1MCk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRy
YW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3Bh
cXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1t
eUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVu
dC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
LSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllci5nZXQoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUo
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgzMCwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMjksIDcwLCA3
MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKLQotICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoMjksIDMwLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzAsIDcwLCA3
MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3
MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAx
LCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDI5LCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDI5
LCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgyOSwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDMxLCAyOSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMzEsIDI5LCA3MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMDAsIDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgyOSwgMzEsIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSkpOwotfQotCi1U
RVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXll
ckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGlvbiwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoUm90YXRpb24pOwotCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aFRyYW5zbGF0aW9uKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhh
dCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgy
MCwgMjApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zv
cm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUsIG9wYXF1ZUxh
eWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXll
ckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIu
Z2V0KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAs
IDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoNDksIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNTEsIDUwLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7Ci0KLSAgICBvY2NsdXNp
b24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDQ5
LCA1MCwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1MCwgNTApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCg1MCwgNTEsIDUwLCA1MCkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwgNTAsIDUw
KSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0
OSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAs
IDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJl
Y3QoNDksIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNDks
IDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwg
NDksIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDUxLCA0OSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAwLCA1MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCg1MSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDUxLCA1MSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoNTEsIDUxLCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg1MCwgMTAwLCA1MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MSwgNTAsIDUwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNDksIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKLQotICAgIG9jY2x1
c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUwLCA1MCwg
NTAsIDUwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwg
MSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50
UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0
OSwgNTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoNDksIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1
MCwgNDksIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoNTAsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCg1MSwgNDksIDQ5LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoNTEsIDQ5LCA1MCwgNTApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNTEsIDUwLCA1
MCwgNTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDUxLCA1MSwgNTAsIDUwKSkuaXNFbXB0
eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudC5nZXQoKSwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNTEsIDEsIDQ5KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoNDksIDUxLCA1MCwgNTApKSk7Ci0gICAg
b2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0X2xheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFRyYW5zbGF0aW9uLCBsYXllckFkZGVk
VG9PY2NsdWRlZFJlZ2lvbldpdGhUcmFuc2xhdGlvbik7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2Nj
bHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAg
Ly8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgot
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBh
cmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQp
OwotICAgIGNoaWxkLT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTAp
OwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJh
bnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEw
MCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwg
Y2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVM
YXllcnMpOwotCi0gICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1
bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+
c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJl
bnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3Qs
IGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24u
ZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0
KDksIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
Y2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjEsIDcw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIElu
dFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXll
clNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
LmdldCgpLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEw
LCA0MjksIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzEpKSk7
Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQuZ2V0
KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0
KCksIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgp
LmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0
MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCA0MSwgNzAsIDYwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNz
b3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwg
MzksIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMxLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0g
ICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0KLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb24gZnJv
bSB8bGF5ZXJ8OgotICAgICAgICAgICAgICAgMTAwCi0gICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfDMwICBWaXNpYmxlIHJl
Z2lvbiBvZiB8bGF5ZXJ8OiAvLy8vLwotICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAg
ICAgICAgIHJvdGF0ZSg5MCkgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8
Ci0gICAgICB8IDMwICsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAg
MTAwIHwgICAgfCAgMTAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
PT0+ICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAotICAgICAg
fCAgICB8MTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
ICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICB8Ci0gICAgICB8ICAg
IHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
fCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgIHwgICAgfCAg
fCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICB8ICB8
ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAgICAgICAgfCAgfAotICAgICAgfCAgICB8ICB8ICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwv
Ly8vLy8vLy8vLy8vLy98ICAgICAgICAgICAgICB8ICB8Ci0gICAgICArLS0tLXwtLXwtLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAgICA3MCAg
ICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwg
ICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDEw
fAotICAgICAgICAgICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAg
ICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCi0g
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAg
ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwMAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9P
UEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJlZ2lvbldp
dGhSb3RhdGVkU3VyZmFjZSwgbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1
cmZhY2UpOwotCi12b2lkIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0aFN1cmZhY2VBbHJl
YWR5T25TdGFjayhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRoYXQg
dGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBh
cmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gY2hpbGQyID0gYWRvcHRSZWYobmV3IExheWVyQ2hy
b21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJm
YWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPmFkZENoaWxk
KGxheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMik7Ci0KLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUo
MjUwLCAyNTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGls
ZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVl
LCBvcGFxdWVMYXllcnMpOwotCi0gICAgLy8gfGNoaWxkMnwgbWFrZXMgfHBhcmVudHwncyBzdXJm
YWNlIGdldCBjb25zaWRlcmVkIGJ5IENDT2NjbHVzaW9uVHJhY2tlciBmaXJzdCwgaW5zdGVhZCBv
ZiB8Y2hpbGR8J3MuIFRoaXMgZXhlcmNpc2VzIGRpZmZlcmVudCBjb2RlIGluCi0gICAgLy8gbGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UsIGFzIHRoZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFk
eSBiZWVuIHNlZW4uCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNjAsIDIwKSwg
dHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIGNoaWxkLT5zZXRNYXNrc1RvQm91bmRzKHRydWUp
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXll
ckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0
OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1
bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEwLCAtMTAsIDEwMDAsIDEwMDApKTsK
LQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIu
Z2V0KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkp
OwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMw
LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDEx
LCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0MzEsIDYwLCA3MCkpKTsKLQotICAgIG9jY2x1c2lvbi51
c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwg
NjAsIDcwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5nZXQo
KSwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQz
MSwgNjAsIDcwKSkpOwotICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
LTEwLCAtMTAsIDEwMDAsIDEwMDApKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKLSAgICAvLyBUaGlzIGlzIHRoZSBsaXR0bGUgcGllY2Ugbm90IG9jY2x1ZGVk
IGJ5IGNoaWxkMgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCAxLCAxMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMw
LCA2MCwgNzApKSk7Ci0gICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgYm90aCBzaWRlcyBvZiBjaGls
ZDIsIHNvIGl0IHdpbGwgYmUgdGhlIG9yaWdpbmFsIHJlY3QuCi0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCg5LCA0MzAsIDYwLCA4MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
Y2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgODApKSk7Ci0gICAgLy8gVGhpcyBleHRl
bmRzIHBhc3QgdHdvIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgYW5kIHNob3VsZCBpbmNsdWRl
ZCB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNpZGUuCi0gICAgLy8gVGhpcyBhbHNvIGRl
bW9uc3RyYXRlcyB0aGF0IHRoZSByZWN0IGNhbiBiZSBhcmJpdHJhcnkgYW5kIGRvZXMgbm90IGdl
dCBjbGlwcGVkIHRvIHRoZSBsYXllcidzIHZpc2libGVMYXllclJlY3QoKS4KLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCAyMCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKSk7Ci0gICAg
Ly8gVGhpcyBleHRlbmRzIHBhc3QgdGhyZWUgYWRqYWNlbnQgc2lkZXMgb2YgY2hpbGQyLCBzbyBp
dCBzaG91bGQgY29udGFpbiB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNpZGUuIFRoZSBs
ZWZ0Ci0gICAgLy8gYW5kIGJvdHRvbSBlZGdlcyBhcmUgY29tcGxldGVseSB1bm9jY2x1ZGVkIGZv
ciBzb21lIHJvdy9jb2x1bW4gc28gd2UgZ2V0IGJhY2sgdGhlIG9yaWdpbmFsIHF1ZXJ5IHJlY3Qu
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAs
IDgwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQyOSwgNjAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDEwLCA0Mjks
IDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDcwLCA0MzAsIDEsIDcwKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwg
NDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwg
MSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3Qo
MTAsIDQzMSwgNjAsIDcwKSkpOwotCi0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNz
b3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCks
IEludFJlY3QoOSwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMw
LCA2MCwgODApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpLmlz
RW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChjaGlsZC5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwgNjAsIDgwKSkuaXNFbXB0eSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLmdldCgp
LCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMSwg
NDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSku
aXNFbXB0eSgpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihjaGlsZC5nZXQoKSk7Ci0gICAgLy8gfGNoaWxkMnwgc2hvdWxkIGdldCBtZXJnZWQgd2l0aCB0
aGUgc3VyZmFjZSB3ZSBhcmUgbGVhdmluZyBub3cKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJn
ZXRSZW5kZXJTdXJmYWNlKGNoaWxkLmdldCgpLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0g
ICAgVmVjdG9yPEludFJlY3Q+IHNjcmVlbiA9IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKTsKLSAgICBWZWN0b3I8SW50UmVjdD4gdGFyZ2V0ID0gb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDkwLCAzMCwgMTAsIDEwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
KSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwg
NjAsIDEwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDMxLCA2MCwgMTApKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMw
LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMzAsIDMwLCA2MCwgMTApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNjAsIDEwKSkpOwotICAg
IEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAsIDMwLCAxLCAxMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50Lmdl
dCgpLCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSkuaXNFbXB0eSgpKTsKLQotICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDMwLCA0MCwgNzAsIDYwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDI5LCA0MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyOSwgNDAsIDcwLCA2MCkpKTsKLSAgICAvLyBUaGlzIHJlY3QgaXMgbW9z
dGx5IG9jY2x1ZGVkIGJ5IHxjaGlsZDJ8LgotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOTAs
IDM5LCAxMCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBleHRlbmRzIHBh
c3QgdG9wL3JpZ2h0IGVuZHMgb2YgfGNoaWxkMnwuCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgzMCwgMjksIDcwLCAxMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotICAgIC8vIFRoaXMgcmVjdCBleHRl
bmRzIHBhc3QgbGVmdC9yaWdodCBlbmRzIG9mIHxjaGlsZDJ8LgotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjAsIDM5LCA4MCwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwMCwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MSwgNzAsIDYwKSkpOwotCi0gICAg
LyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbiBmcm9tIHxsYXllcnw6Ci0g
ICAgICAgICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8MzAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXll
cnw6IC8vLy8vCi0gICAgICB8ICAgIDMwICAgICAgICAgICAgICAgfCAgICAgICAgICAgcm90YXRl
KDkwKSAgICAgICAgICAgICAgICAgfCAgICAgMzAgICA2MCAgICAgICAgIHwgICAgfGNoaWxkMnw6
IFxcXFxcCi0gICAgICB8IDMwICsgLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg
ICAgICAgICAgICAgICAgICAgfCAgMzAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLSAgMTAwIHwgICAgfCAgMTAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgPT0+ICAgICB8ICAgICB8XFxcXFxcXFxcXFxcfCAgfDEwICAgICAgICAgICAgICAgfAot
ICAgICAgfCAgICB8MTArLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAg
ICAgICAgICAgIHwgICstLXxcXFxcXFxcXFxcXFx8LS0tLS0tLS0tLS0tLS0tLS0rICB8Ci0gICAg
ICB8ICAgICsgLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAg
ICAgICAgfCAgfCAgKy0tLS0tLS0tLS0tLSsvL3wgICAgIDQyMCAgICAgIHwgIHwKLSAgICAgIHwg
ICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAg
ICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfDYwICAgICAgICAgICAgfCAgfAotICAgICAgfCAgICB8
ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwg
IHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICAgICAgICAgICB8ICB8Ci0gICAgICArLS0tLXwtLXwt
LS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0t
fC0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgMjB8MTB8ICAg
ICA3MCAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfDEwfAotICAgICAgICAgICArLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg
fCAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18
LS0rCi0gICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAgICAgICAgIHwKLSAg
ICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDUwMAotICAgICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9PY2NsdWRlZFJl
Z2lvbldpdGhTdXJmYWNlQWxyZWFkeU9uU3RhY2ssIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9u
V2l0aFN1cmZhY2VBbHJlYWR5T25TdGFjayk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRvT2NjbHVkZWRS
ZWdpb25XaXRoUm90YXRlZE9mZkF4aXNTdXJmYWNlKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVu
dC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwot
ICAgIGNoaWxkLT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICAvLyBOb3cgcm90YXRlIHRoZSBjaGls
ZCBhIGxpdHRsZSBtb3JlIHNvIGl0IGlzIG5vdCBheGlzLWFsaWduZWQuIFRoZSBwYXJlbnQgd2ls
bCBubyBsb25nZXIgYmUgb2NjbHVkZWQgYnkgfGxheWVyfCwgYnV0Ci0gICAgLy8gdGhlIGNoaWxk
J3Mgb2NjbHVzaW9uIHNob3VsZCBiZSB1bmNoYW5nZWQuCi0KLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5NSk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJU
cmFuc2Zvcm07Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7Ci0KLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgz
MCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAgY2hpbGQtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAg
ICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7Ci0KLSAgICBJbnRSZWN0IGNsaXBwZWRMYXllckluQ2hpbGQgPSBsYXllclRyYW5z
Zm9ybS5tYXBSZWN0KGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkpOwotCi0gICAgb2NjbHVzaW9u
LmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotCi0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKGNsaXBwZWRMYXll
ckluQ2hpbGQsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hp
bGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBjbGlwcGVkTGF5
ZXJJbkNoaWxkKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LmdldCgpLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKS5pc0VtcHR5KCkpOwotICAg
IGNsaXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxk
Lm1vdmUoMSwgMCk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZC5n
ZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCku
aXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1vdmUoLTEsIDApOwotICAgIGNs
aXBwZWRMYXllckluQ2hpbGQubW92ZSgwLCAtMSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZC5nZXQoKSwgY2xpcHBlZExheWVySW5DaGlsZCkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgY2xp
cHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKLSAgICBjbGlwcGVkTGF5ZXJJbkNoaWxkLm1v
dmUoMCwgMSk7Ci0gICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIDEpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hp
bGQpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7Ci0gICAgY2xpcHBl
ZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihjaGlsZC5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZC5nZXQoKSwgY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNzUsIDU1LCAxLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQuZ2V0KCksIEludFJlY3QoNzUsIDU1LCAxLCAxKSkpOwotfQotCi1URVNUX09QQVFV
RV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllckFkZGVkVG9P
Y2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkT2ZmQXhpc1N1cmZhY2UsIGxheWVyQWRkZWRUb09jY2x1
ZGVkUmVnaW9uV2l0aFJvdGF0ZWRPZmZBeGlzU3VyZmFjZSk7Ci0KLXZvaWQgbGF5ZXJBZGRlZFRv
T2NjbHVkZWRSZWdpb25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMoYm9vbCBvcGFxdWVMYXllcnMp
Ci17Ci0gICAgLy8gVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBwcmV2aW91cyB0ZXN0IGJ1dCBub3cg
d2UgbWFrZSBhIGZldyBvcGFxdWUgbGF5ZXJzIGluc2lkZSBvZiB8Y2hpbGR8IHNvIHRoYXQgdGhl
IG9jY2x1ZGVkIHBhcnRzIG9mIGNoaWxkIGFyZSBub3QgYSBzaW1wbGUgcmVjdC4KLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRy
PExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVh
dGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZCk7Ci0gICAgY2hp
bGQtPmFkZENoaWxkKGxheWVyMSk7Ci0gICAgY2hpbGQtPmFkZENoaWxkKGxheWVyMik7Ci0KLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0g
ICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwg
SW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5
ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUw
MCwgNDQwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyMi5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDQ1MCks
IEludFNpemUoNTAwLCA2MCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBjaGlsZC0+c2V0
TWFza3NUb0JvdW5kcyh0cnVlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
LQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KElu
dFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBS
ZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJl
bmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0
KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0K
LSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
Y2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyMi5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyMS5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwg
NzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLmdldCgp
LCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLmdldCgpLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQy
OSwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQu
Z2V0KCksIEludFJlY3QoMTEsIDQzMCwgNjAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZC5n
ZXQoKSwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoOSwgNDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Ci0gICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMCwgNDI5LCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QoY2hpbGQuZ2V0KCksIEludFJlY3QoMTAsIDQyOSwgNjAsIDcwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KGNoaWxkLmdldCgpLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZC5nZXQoKSwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7
Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQuZ2V0KCkpOwot
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQuZ2V0KCksIGNo
aWxkLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCA0MCwgNzAs
IDYwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMzAsIDQwLCA3MCwg
NjApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDQwLCAxLCA2
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDI5LCA0MCwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDM5LCA3
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAzOSwgNzAsIDYwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0
MCwgMSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwg
SW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMw
LCAxMDAsIDcwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0
KCksIEludFJlY3QoMzAsIDQxLCA3MCwgNjApKSk7Ci0KLSAgICAvKiBKdXN0aWZpY2F0aW9uIGZv
ciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxheWVyMXwgYW5kIHxsYXllcjJ8OgotCi0gICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
fDMwICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXIxfDogLy8vLy8KLSAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgfCAgICBWaXNpYmxlIHJlZ2lvbiBvZiB8bGF5ZXIyfDogXFxcXFwKLSAgICAg
ICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgIHwgICAg
IHwgICAgICAgICAgICAgICB8MTAgICAgICAgICAgICAgICB8Ci0gICAgICAgfCAgKy0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsgIHwKLSAgICAgICB8ICB8ICB8XFxcXFxcXFxcXFxc
fC8vfCAgICAgNDIwICAgICAgfCAgfAotICAgICAgIHwgIHwgIHxcXFxcXFxcXFxcXFx8Ly98NjAg
ICAgICAgICAgICB8ICB8Ci0gICAgICAgfCAgfCAgfFxcXFxcXFxcXFxcXHwvL3wgICAgICAgICAg
ICAgIHwgIHwKLSAgICAgICArLS18LS18LS0tLS0tLS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAg
fAotICAgICAgICAyMHwxMHwgICAgIDcwICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAg
ICAgICAgfCAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8
ICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgfCAgfCAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgfCAgfAotICAgICAgICAgIHwgIHwgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICB8MTB8Ci0gICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLXwt
LSsKLSAgICAgICAgICB8ICAgICAgICAgICAgICAgfCA0OTAgICAgICAgICAgICAgfAotICAgICAg
ICAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICAgICAgICAgICAg
NjAgICAgICAgICAgICAgICA0NDAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5U
RURfT1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3RfbGF5ZXJBZGRlZFRvT2NjbHVkZWRSZWdp
b25XaXRoTXVsdGlwbGVPcGFxdWVMYXllcnMsIGxheWVyQWRkZWRUb09jY2x1ZGVkUmVnaW9uV2l0
aE11bHRpcGxlT3BhcXVlTGF5ZXJzKTsKLQotdm9pZCBzdXJmYWNlT2NjbHVzaW9uV2l0aE92ZXJs
YXBwaW5nU2libGluZ1N1cmZhY2VzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIC8vIFRoaXMg
dGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVpbmcgdXNlZC4KLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBjaGlsZDIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMSA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyMiA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMSk7Ci0g
ICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDIpOwotICAgIGNoaWxkMS0+YWRkQ2hpbGQobGF5ZXIx
KTsKLSAgICBjaGlsZDItPmFkZENoaWxkKGxheWVyMik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjaGlsZFRyYW5zZm9ybTsKLSAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOwotICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDEuZ2V0
KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyMS5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFx
dWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgp
LCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDUwMCwgNTAwKSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllcjIuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSwgb3BhcXVl
TGF5ZXJzKTsKLQotICAgIGNoaWxkMS0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLSAgICBjaGls
ZDItPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUg
PSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5z
ZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsK
LSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFy
ZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNp
emUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVj
dCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwLCA0MCwgODAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDQyMCwgNjAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5k
cygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KDAsIDQyMCwgNjAsIDgwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xLCA0MjAsIDYw
LCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQo
KSwgSW50UmVjdCgwLCA0MTksIDYwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0MjAsIDYxLCA4MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgwLCA0
MjAsIDYwLCA4MSkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihj
aGlsZDIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
Y2hpbGQyLmdldCgpLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBv
Y2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgp
KTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIxLmdldCgpKTsK
LQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMnUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgNDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3QoMCwgNDMwLCA3
MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0
KCksIEludFJlY3QoLTEsIDQzMCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAsIDQyOSwgNzAsIDcwKSkpOwotICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDAs
IDQzMCwgNzEsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQxLmdldCgpLCBJbnRSZWN0KDAsIDQzMCwgNzAsIDcxKSkpOwotCi0gICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlz
aGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgw
LCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAg
IEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzAsIDgwLCA3MCksIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNU
X0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMjAsIDMwLCA4MCwgNzApKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAz
MCwgNzAsIDcwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LmdldCgpLCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgNDAsIDgwLCA2MCkpKTsK
LSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVj
dCgxOSwgNDAsIDgwLCA2MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwgMzksIDgwLCA2MCkpKTsKLQotICAgIC8qIEp1c3Rp
ZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2NsdXNpb246Ci0gICAgICAgICAgICAgICAxMDAKLSAg
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAg
fAotICAgICAgfCAgICAzMCAgICAgICAgICAgICAgIHwgICAgICAgY2hpbGQxCi0gICAgICB8ICAz
MCsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfCAgNDB8ICAgICAg
ICAgICAgICAgIHwgICAgIGNoaWxkMiAgICAgIHwKLSAgICAgIHwyMCstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKyB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgIHwgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICB8IHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8Ci0g
ICAgICArLS18LXwtLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwgfAotICAgICAgICAg
fCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgNTAwCi0gICAgICAgICB8IHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAg
ICAgICB8ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtKwotICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKLSAg
ICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcywg
c3VyZmFjZU9jY2x1c2lvbldpdGhPdmVybGFwcGluZ1NpYmxpbmdTdXJmYWNlcyk7Ci0KLXZvaWQg
c3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3BhY2UoYm9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAg
Ly8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgot
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0
cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMiA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIx
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIyID0g
YWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAg
IHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hp
bGQxKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGNoaWxkMik7Ci0gICAgY2hpbGQxLT5hZGRDaGls
ZChsYXllcjEpOwotICAgIGNoaWxkMi0+YWRkQ2hpbGQobGF5ZXIyKTsKLQotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwotICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0
ZSgyNTAsIDI1MCk7Ci0gICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKLSAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7Ci0KLSAgICAvLyBUaGUgb3duaW5nIGxheWVy
cyBoYXZlIHZlcnkgZGlmZmVyZW50IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkg
b3duLgotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgt
MTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgyMCwgNDApLCBJbnRTaXplKDEwLCAxMCkpOwotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgt
MTAsIC0xMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
Ly8gTWFrZSB0aGVtIGJvdGggcmVuZGVyIHN1cmZhY2VzCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBm
aWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlT
Q0FMRSkpOwotICAgIGNoaWxkMS0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBjaGlsZDItPnNl
dEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBjaGlsZDEtPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2Up
OwotICAgIGNoaWxkMi0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0KLSAgICBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4
VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29u
dGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0g
ICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+
Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwot
Ci0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15
TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24o
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwotCi0gICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMi5nZXQoKSk7Ci0KLSAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbklu
U2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRT
dXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50
UmVjdCgtMTEsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTEwLCA0
MjAsIDcxLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxk
Mi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgxKSkpOwotCi0gICAgb2NjbHVzaW9uLnVz
ZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJlY3QoLTExLCA0
MjAsIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LmdldCgpLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0KCksIEludFJl
Y3QoLTEwLCA0MjAsIDcwLCA4MSkpKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQyLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkMi5nZXQoKSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkp
OwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZDEtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKGxheWVyMS5nZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwg
ODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVY
UEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0
KCksIEludFJlY3QoLTEwLCA0MzAsIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTEsIDQzMCwgODAsIDcwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDI5LCA4MCwgNzApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZDEuZ2V0KCksIEludFJlY3QoLTEwLCA0MzAsIDgxLCA3MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCgtMTAsIDQzMCwg
ODAsIDcxKSkpOwotCi0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxk
MS5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGls
ZDEuZ2V0KCksIGNoaWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25J
blNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDJ1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAsIDIwLCA4MCwgODApKSk7
Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDMwLCAyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDI5LCAyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDMwLCAxOSwgNzAs
IDgwKSkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQo
KSwgSW50UmVjdCgyMCwgMzAsIDgwLCA3MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxOSwgMzAsIDgwLCA3MCkpKTsKLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMCwg
MjksIDgwLCA3MCkpKTsKLQotICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBhYm92ZSBvY2Ns
dXNpb246Ci0gICAgICAgICAgICAgICAxMDAKLSAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci0gICAgICB8ICAgIDIwICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKLSAgICAgIHwgIDMw
KyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gIDEwMCB8ICAzMHwgICAgICAg
ICAgICAgICAgfCAgICAgbGF5ZXIyICAgICAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rIHwKLSAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgfCB8Ci0gICAgICB8ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
IHwgfAotICAgICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKLSAg
ICAgICstLXwtfC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCA1MTAKLSAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IHwKLSAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8Ci0gICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
fAotICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAg
ICAgIHwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0rCi0gICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAgICAgICAgICAgICAgICAgICAgIDUxMAotICAg
ICAqLwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdF9zdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZSwgc3VyZmFjZU9jY2x1c2lvbklu
U2NyZWVuU3BhY2UpOwotCi12b2lkIHN1cmZhY2VPY2NsdXNpb25JblNjcmVlblNwYWNlRGlmZmVy
ZW50VHJhbnNmb3Jtcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICAvLyBUaGlzIHRlc3RzIHRo
YXQgdGhlIHJpZ2h0IHRyYW5zZm9ybXMgYXJlIGJlaW5nIHVzZWQuCi0gICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9t
aXVtPiBjaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjEgPSBhZG9wdFJlZihuZXcg
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVy
Q2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllcjIgPSBhZG9wdFJlZihuZXcgTGF5
ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChjaGlsZDEpOwotICAgIHBhcmVu
dC0+YWRkQ2hpbGQoY2hpbGQyKTsKLSAgICBjaGlsZDEtPmFkZENoaWxkKGxheWVyMSk7Ci0gICAg
Y2hpbGQyLT5hZGRDaGlsZChsYXllcjIpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hp
bGQxVHJhbnNmb3JtOwotICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwot
ICAgIGNoaWxkMVRyYW5zZm9ybS5yb3RhdGUoLTkwKTsKLSAgICBjaGlsZDFUcmFuc2Zvcm0udHJh
bnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQyVHJh
bnNmb3JtOwotICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGNo
aWxkMlRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUo
LTI1MCwgLTI1MCk7Ci0KLSAgICAvLyBUaGUgb3duaW5nIGxheWVycyBoYXZlIHZlcnkgZGlmZmVy
ZW50IGJvdW5kcyBmcm9tIHRoZSBzdXJmYWNlcyB0aGF0IHRoZXkgb3duLgotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoY2hpbGQxLmdldCgpLCBjaGlsZDFUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDIw
KSwgSW50U2l6ZSgxMCwgMTApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxh
eWVyMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMjApLCBJbnRTaXpl
KDUxMCwgNTIwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0
MCksIEludFNpemUoMTAsIDEwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhs
YXllcjIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6
ZSg1MTAsIDUxMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICAvLyBNYWtlIHRoZW0gYm90
aCByZW5kZXIgc3VyZmFjZXMKLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmls
dGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgY2hp
bGQxLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGNoaWxkMi0+c2V0RmlsdGVycyhmaWx0ZXJz
KTsKLQotICAgIGNoaWxkMS0+c2V0TWFza3NUb0JvdW5kcyhmYWxzZSk7Ci0gICAgY2hpbGQyLT5z
ZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0z
MCwgLTMwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIobGF5ZXIyLmdldCgpKTsKLQotICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMjAsIDMwLCA4MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJv
dW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0
MjAsIDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMo
KSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0KC0xMSwgNDIwLCA3
MCwgODApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIuZ2V0
KCksIEludFJlY3QoLTEwLCA0MTksIDcwLCA4MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMi5nZXQoKSwgSW50UmVjdCgtMTAsIDQyMCwgNzEsIDgwKSkpOwot
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLmdldCgpLCBJbnRSZWN0
KC0xMCwgNDIwLCA3MCwgODEpKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIoY2hpbGQyLmdldCgpKTsKLSAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJT
dXJmYWNlKGNoaWxkMi5nZXQoKSwgY2hpbGQyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1
cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyMS5n
ZXQoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQyMCwgLTIwLCA4MCwgOTApLCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0KCksIEludFJlY3Qo
NDIwLCAtMjAsIDgwLCA5MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MTksIC0yMCwgODAsIDkwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLmdldCgpLCBJbnRSZWN0KDQyMCwgLTIxLCA4
MCwgOTApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDEuZ2V0
KCksIEludFJlY3QoNDIwLCAtMTksIDgwLCA5MCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMS5nZXQoKSwgSW50UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOwot
Ci0gICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGNoaWxkMS5nZXQoKSk7Ci0g
ICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEuZ2V0KCksIGNo
aWxkMS0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRl
clN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMjAsIDkwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMCwgMjAsIDkwLCA4MCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCg5LCAyMCwgOTAs
IDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgp
LCBJbnRSZWN0KDEwLCAxOSwgOTAsIDgwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDExLCAyMCwgOTAsIDgwKSkpOwotICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwLCAy
MSwgOTAsIDgwKSkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1
c2lvbjoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgIHwyMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIGxheWVyMQotICAgICAxMCstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAxMDAgfHwgMzAgICAgICAgICAgICAg
ICAgIHwgICAgIGxheWVyMiAgfAotICAgICAgfDIwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi0gICAgICB8fCB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IHwK
LSAgICAgIHx8IHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgfAotICAgICAgfHwg
fCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCB8Ci0gICAgICArfC18LS0tLS0tLS0t
LS0tLS0tLS0tKyAgICAgICAgICAgICB8IHwKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgfCA1MTAKLSAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTEwIHwgfAotICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8
Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKLSAgICAgICB8
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAotICAgICAgIHwgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8Ci0gICAgICAgfCB8ICAgICAgICAgICAgICAgIDUy
MCAgICAgICAgICAgICB8IHwKLSAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsgfAotICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0g
ICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICA1MTAKLSAgICAgKi8KLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURf
T1BBUVVFKENDT2NjbHVzaW9uVHJhY2tlclRlc3Rfc3VyZmFjZU9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2VEaWZmZXJlbnRUcmFuc2Zvcm1zLCBzdXJmYWNlT2NjbHVzaW9uSW5TY3JlZW5TcGFjZURpZmZl
cmVudFRyYW5zZm9ybXMpOwotCi12b2lkIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMo
Ym9vbCBvcGFxdWVMYXllcnMpCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSByaWdodCB0
cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGJsdXJMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IG9wYWNpdHlMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0
aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IG9wYXF1ZUxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQoYmx1ckxheWVyKTsKLSAgICBwYXJlbnQtPmFkZENo
aWxkKG9wYWNpdHlMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChvcGFxdWVMYXllcik7Ci0K
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5z
Zm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwotICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7
Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhibHVyTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhcXVlTGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlLCBvcGFxdWVMYXll
cnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcob3BhY2l0eUxheWVyLmdldCgp
LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwg
dHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogY3JlYXRlUm9vdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIgPSBUeXBlczo6
Y3JlYXRlQ29udGVudExheWVyKCk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBsYXllclB0ciA9IGxheWVyLmdldCgpOworICAgICAgICBzZXRQcm9wZXJ0aWVzKGxh
eWVyUHRyLCB0cmFuc2Zvcm0sIHBvc2l0aW9uLCBib3VuZHMpOwogCisgICAgICAgIEFTU0VSVCgh
bV9yb290KTsKKyAgICAgICAgbV9yb290ID0gbGF5ZXIucmVsZWFzZSgpOworICAgICAgICByZXR1
cm4gbGF5ZXJQdHI7CisgICAgfQorCisgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY3Jl
YXRlTGF5ZXIodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwotICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRlck9wZXJhdGlv
bjo6QkxVUikpOwotICAgICAgICBibHVyTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0clR5cGUgbGF5ZXIgPSBUeXBlczo6Y3JlYXRlTGF5
ZXIoKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXJQdHIgPSBsYXll
ci5nZXQoKTsKKyAgICAgICAgc2V0UHJvcGVydGllcyhsYXllclB0ciwgdHJhbnNmb3JtLCBwb3Np
dGlvbiwgYm91bmRzKTsKKyAgICAgICAgcGFyZW50LT5hZGRDaGlsZChsYXllci5yZWxlYXNlKCkp
OworICAgICAgICByZXR1cm4gbGF5ZXJQdHI7CiAgICAgfQogCisgICAgdHlwZW5hbWUgVHlwZXM6
OkxheWVyVHlwZSogY3JlYXRlU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJl
bnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgeworICAgICAgICB0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciA9IGNyZWF0ZUxheWVyKHBhcmVudCwgdHJhbnNm
b3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJz
OwogICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NB
TEUpKTsKLSAgICAgICAgb3BhcXVlTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CisgICAgICAg
IGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAg
fQogCisgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdM
YXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQogICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIgPSBUeXBlczo6Y3JlYXRlQ29udGVudExheWVy
KCk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllclB0ciA9
IGxheWVyLmdldCgpOworICAgICAgICBzZXRQcm9wZXJ0aWVzKGxheWVyUHRyLCB0cmFuc2Zvcm0s
IHBvc2l0aW9uLCBib3VuZHMpOworCisgICAgICAgIGlmIChvcGFxdWVMYXllcnMpCisgICAgICAg
ICAgICBsYXllclB0ci0+c2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgbGF5ZXJQdHItPnNldE9wYXF1ZShmYWxzZSk7CisgICAgICAgICAgICBpZiAob3BhcXVl
KQorICAgICAgICAgICAgICAgIGxheWVyUHRyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVj
dChJbnRQb2ludCgpLCBib3VuZHMpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBsYXllclB0ci0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoKSk7CisgICAgICAgIH0K
KworICAgICAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyLnJlbGVhc2UoKSk7CisgICAgICAgIHJl
dHVybiBsYXllclB0cjsKKyAgICB9CisKKyAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogY3JlYXRlRHJhd2luZ1N1cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFy
ZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKKyAgICB7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IGNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcywgb3BhcXVl
KTsKICAgICAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgICAgICBmaWx0ZXJzLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKSk7Ci0gICAgICAgIG9wYWNpdHlM
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCku
YXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUs
IEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7CisgICAgICAgIGxheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOworICAgICAgICByZXR1cm4gbGF5ZXI7CiAgICAgfQogCiAKLSAgICBWZWN0b3I8
UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15
TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0
Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7
Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVu
dC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQp
OwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0Fu
ZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBp
ZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1
bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNp
b24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0KLSAgICAvLyBPcGFjaXR5IGxh
eWVyIHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFjaXR5TGF5ZXIuZ2V0KCkpOwotICAg
IG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3BhY2l0eUxheWVyLmdldCgp
LCBvcGFjaXR5TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAg
ICAvLyBBbmQgaGFzIG5vdGhpbmcgdG8gY29udHJpYnV0ZSB0byBpdHMgcGFyZW50IHN1cmZhY2Uu
Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbklu
VGFyZ2V0U3VyZmFjZSgpLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBPcGFxdWUgbGF5ZXIgd2lsbCBj
b250cmlidXRlIHRvIG9jY2x1c2lvbi4KLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihvcGFxdWVMYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmZp
bmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFxdWVMYXllci5nZXQoKSwgb3BhcXVlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwg
NzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0g
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQzMCwgNzAsIDcwKSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBF
Q1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNp
emUoKSk7Ci0KLSAgICAvLyBBbmQgaXQgZ2V0cyB0cmFuc2xhdGVkIHRvIHRoZSBwYXJlbnQgc3Vy
ZmFjZS4KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwg
NzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOwotICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLQotICAgIC8vIFRoZSBibHVyIGxheWVyIG5lZWRzIHRvIHRocm93IGF3YXkgYW55IG9jY2x1
c2lvbiBmcm9tIG91dHNpZGUgaXRzIHN1YnRyZWUuCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0
UmVuZGVyU3VyZmFjZShibHVyTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkp
OwotCi0gICAgLy8gQW5kIGl0IHdvbid0IGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uLgotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihibHVyTGF5ZXIuZ2V0KCkpOwotICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoYmx1ckxheWVyLmdldCgpLCBibHVy
TGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5pc0VtcHR5KCkpOwotCi0gICAgLy8gQnV0IHRo
ZSBvcGFxdWUgbGF5ZXIncyBvY2NsdXNpb24gaXMgcHJlc2VydmVkIG9uIHRoZSBwYXJlbnQuCi0g
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci19Ci0K
LVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X29j
Y2x1c2lvbkludGVyYWN0aW9uV2l0aEZpbHRlcnMsIG9jY2x1c2lvbkludGVyYWN0aW9uV2l0aEZp
bHRlcnMpOwotCi12b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyVGlsZShib29sIG9wYXF1ZUxheWVy
cykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRM
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwot
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQo
cGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVy
T3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVy
YXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBW
ZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1
bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+
c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygp
KSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBh
cmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJl
bnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3Qs
IGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKLQotICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9j
Y2x1c2lvbi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
ci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsK
LQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRl
clN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAs
IDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFR
VUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3ZlclRpbGUsIGxheWVy
U2Npc3NvclJlY3RPdmVyVGlsZSk7Ci0KLXZvaWQgc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZShi
b29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3ND
b250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNl
ZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJh
d3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBh
cmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIp
OworICAgIFRlc3RDb250ZW50TGF5ZXJJbXBsKiBjYWxjRHJhd0V0YyhUZXN0Q29udGVudExheWVy
SW1wbCogcm9vdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChyb290ID09IG1fcm9vdC5nZXQoKSk7
CisgICAgICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0OworICAgICAgICBp
bnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKworICAgICAgICBBU1NFUlQoIXJvb3QtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAg
ICAgICAgcm9vdC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIHJvb3QtPmJvdW5kcygpKSk7CisgICAgICAgIHJvb3QtPnNldENsaXBSZWN0
KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKKyAgICAgICAgbV9y
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0SW1wbC5hcHBlbmQobV9yb290LmdldCgpKTsKKworICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShyb290LCByb290LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVy
U3VyZmFjZUxheWVyTGlzdEltcGwsIGR1bW15TGF5ZXJMaXN0LCAwLCBkdW1teU1heFRleHR1cmVT
aXplKTsKKyAgICAgICAgcmV0dXJuIHJvb3Q7CisgICAgfQogCi0gICAgRmlsdGVyT3BlcmF0aW9u
cyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdS
QVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgIFRlc3RDb250ZW50TGF5ZXJDaHJvbWl1bSog
Y2FsY0RyYXdFdGMoVGVzdENvbnRlbnRMYXllckNocm9taXVtKiByb290KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJvb3QgPT0gbV9yb290LmdldCgpKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OworICAgICAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKKworICAgICAgICBBU1NFUlQoIXJvb3QtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgcm9vdC0+cmVu
ZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHJv
b3QtPmJvdW5kcygpKSk7CisgICAgICAgIHJvb3QtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9p
bnQ6Onplcm8oKSwgcm9vdC0+Ym91bmRzKCkpKTsKKyAgICAgICAgbV9yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0Q2hyb21pdW0uYXBwZW5kKG1fcm9vdCk7CisKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdCwgcm9vdCwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RD
aHJvbWl1bSwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICBy
ZXR1cm4gcm9vdDsKKyAgICB9CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIw
MCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKKyAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
K3ByaXZhdGU6CisgICAgdm9pZCBzZXRCYXNlUHJvcGVydGllcyh0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKKyAgICB7Cisg
ICAgICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgbGF5ZXItPnNl
dFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBsYXll
ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIGxheWVyLT5zZXRQ
b3NpdGlvbihwb3NpdGlvbik7CisgICAgICAgIGxheWVyLT5zZXRCb3VuZHMoYm91bmRzKTsKKyAg
ICB9CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRD
bGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOworICAgIHZvaWQgc2V0UHJv
cGVydGllcyhMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJv
dW5kcykKKyAgICB7CisgICAgICAgIHNldEJhc2VQcm9wZXJ0aWVzKGxheWVyLCB0cmFuc2Zvcm0s
IHBvc2l0aW9uLCBib3VuZHMpOworICAgIH0KIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICB2b2lkIHNl
dFByb3BlcnRpZXMoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzKQorICAgIHsKKyAgICAgICAgc2V0QmFzZVByb3BlcnRpZXMobGF5ZXIsIHRyYW5zZm9y
bSwgcG9zaXRpb24sIGJvdW5kcyk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBsYXllci0+c2V0Q29u
dGVudEJvdW5kcyhsYXllci0+Ym91bmRzKCkpOworICAgIH0KIAotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgLy8gVGhl
c2UgaG9sZCBvd25lcnNoaXAgb2YgdGhlIGxheWVycyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0
ZXN0LgorICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0clR5cGUgbV9yb290OworICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RDaHJvbWl1
bTsKKyAgICBWZWN0b3I8Q0NMYXllckltcGwqPiBtX3JlbmRlclN1cmZhY2VMYXllckxpc3RJbXBs
OworfTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworI2RlZmluZSBSVU5fVEVTVF9NQUlO
X1RIUkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIGNsYXNzIENsYXNzTmFtZSMj
TWFpblRocmVhZE9wYXF1ZUxheWVycyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFj
a2VyVGVzdE1haW5UaHJlYWRUeXBlcywgdHJ1ZT4geyBcCisgICAgcHVibGljOiBcCisgICAgICAg
IENsYXNzTmFtZSMjTWFpblRocmVhZE9wYXF1ZUxheWVycygpIDogQ2xhc3NOYW1lPENDT2NjbHVz
aW9uVHJhY2tlclRlc3RNYWluVGhyZWFkVHlwZXMsIHRydWU+KCkgeyB9IFwKKyAgICB9OyBcCisg
ICAgVEVTVF9GKENsYXNzTmFtZSMjTWFpblRocmVhZE9wYXF1ZUxheWVycywgcnVuVGVzdCkgeyBy
dW5NeVRlc3QoKTsgfQorI2RlZmluZSBSVU5fVEVTVF9NQUlOX1RIUkVBRF9PUEFRVUVfUEFJTlRT
KENsYXNzTmFtZSkgXAorICAgIGNsYXNzIENsYXNzTmFtZSMjTWFpblRocmVhZE9wYXF1ZVBhaW50
cyA6IHB1YmxpYyBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFja2VyVGVzdE1haW5UaHJlYWRUeXBl
cywgZmFsc2U+IHsgXAorICAgIHB1YmxpYzogXAorICAgICAgICBDbGFzc05hbWUjI01haW5UaHJl
YWRPcGFxdWVQYWludHMoKSA6IENsYXNzTmFtZTxDQ09jY2x1c2lvblRyYWNrZXJUZXN0TWFpblRo
cmVhZFR5cGVzLCBmYWxzZT4oKSB7IH0gXAorICAgIH07IFwKKyAgICBURVNUX0YoQ2xhc3NOYW1l
IyNNYWluVGhyZWFkT3BhcXVlUGFpbnRzLCBydW5UZXN0KSB7IHJ1bk15VGVzdCgpOyB9CisKKyNk
ZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAg
ICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMgOiBwdWJsaWMgQ2xhc3NO
YW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFkVHlwZXMsIHRydWU+IHsgXAorICAg
ICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsgXAorICAgIHB1YmxpYzogXAorICAg
ICAgICBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMoKSA6IENsYXNzTmFtZTxDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0SW1wbFRocmVhZFR5cGVzLCB0cnVlPigpIHsgfSBcCisgICAgfTsg
XAorICAgIFRFU1RfRihDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVMYXllcnMsIHJ1blRlc3Qp
IHsgcnVuTXlUZXN0KCk7IH0KKyNkZWZpbmUgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX1BB
SU5UUyhDbGFzc05hbWUpIFwKKyAgICBjbGFzcyBDbGFzc05hbWUjI0ltcGxUaHJlYWRPcGFxdWVQ
YWludHMgOiBwdWJsaWMgQ2xhc3NOYW1lPENDT2NjbHVzaW9uVHJhY2tlclRlc3RJbXBsVGhyZWFk
VHlwZXMsIGZhbHNlPiB7IFwKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7
IFwKKyAgICBwdWJsaWM6IFwKKyAgICAgICAgQ2xhc3NOYW1lIyNJbXBsVGhyZWFkT3BhcXVlUGFp
bnRzKCkgOiBDbGFzc05hbWU8Q0NPY2NsdXNpb25UcmFja2VyVGVzdEltcGxUaHJlYWRUeXBlcywg
ZmFsc2U+KCkgeyB9IFwKKyAgICB9OyBcCisgICAgVEVTVF9GKENsYXNzTmFtZSMjSW1wbFRocmVh
ZE9wYXF1ZVBhaW50cywgcnVuVGVzdCkgeyBydW5NeVRlc3QoKTsgfQorCisjZGVmaW5lIEFMTF9D
Q09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9NQUlOX1RI
UkVBRF9PUEFRVUVfTEFZRVJTKENsYXNzTmFtZSkgXAorICAgIFJVTl9URVNUX01BSU5fVEhSRUFE
X09QQVFVRV9QQUlOVFMoQ2xhc3NOYW1lKSBcCisgICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BB
UVVFX0xBWUVSUyhDbGFzc05hbWUpIFwKKyAgICBSVU5fVEVTVF9JTVBMX1RIUkVBRF9PUEFRVUVf
UEFJTlRTKENsYXNzTmFtZSkKKworI2RlZmluZSBNQUlOX0FORF9JTVBMX1RIUkVBRF9URVNUKENs
YXNzTmFtZSkgXAorICAgIFJVTl9URVNUX01BSU5fVEhSRUFEX09QQVFVRV9MQVlFUlMoQ2xhc3NO
YW1lKSBcCisgICAgUlVOX1RFU1RfSU1QTF9USFJFQURfT1BBUVVFX0xBWUVSUyhDbGFzc05hbWUp
CisKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RJZGVudGl0eVRyYW5zZm9ybXMgOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVu
dCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAg
Ly8gT2NjbHVkZWQgc2luY2UgaXRzIG91dHNpZGUgdGhlIHN1cmZhY2UgYm91bmRzLgotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEw
MCwgMTAwLCAxMDApKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgIC8v
IFRlc3Qgd2l0aG91dCBhbnkgc2Npc3NvcnMuCi0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3Nv
clJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9u
LnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzEsIDcw
LCA3MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMCwgMSwgNzApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyOSwgMjksIDcwLCA3MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAyOSwgNzAs
IDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcw
LCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMSwgMjksIDcwLCA3MCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMxLCAyOSwg
NzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMzAsIDEsIDcw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMw
LCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzEsIDMxLCA3MCwg
NzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMSwg
MzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDMw
LCAzMSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCAzMSwg
NzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MjksIDMxLCA3MCwgNzApKSk7CisgICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworQUxM
X0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RJZGVudGl0eVRy
YW5zZm9ybXMpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBi
b29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hp
bGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7
Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRy
YW5zbGF0ZSgyNTAsIDI1MCk7CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Cisg
ICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlz
LT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBl
KiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3Jt
LCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAg
dGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MjAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci19CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKIAotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2NjbHVz
aW9uVHJhY2tlclRlc3Rfc2NyZWVuU2Npc3NvclJlY3RPdmVyVGlsZSwgc2NyZWVuU2Npc3NvclJl
Y3RPdmVyVGlsZSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAz
MCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMw
LCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDMwLCA3MCwgNzAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDMxLCA3MCwgNzAp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAs
IDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwg
MzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgzMCwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MzAsIDMwLCA3MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDI5LCAzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgyOSwgMzAsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyOSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDI5LCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDMwLCAyOSwgNzAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgzMCwgMjksIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgzMSwgMjksIDcwLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDMxLCAyOSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMzAsIDEsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMzEsIDMxLCA3MCwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgzMSwgMzEsIDcwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMTAwLCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNzAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDI5LCAzMSwgNzAsIDcwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMjksIDMxLCA3MCwgNzApKSk7CisgICAgfQorfTsKIAot
dm9pZCBsYXllclNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVu
dExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKK0FMTF9DQ09DQ0xVU0lPTlRS
QUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0Um90YXRlZENoaWxkKTsKIAotICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK3RlbXBsYXRlPGNsYXNzIFR5
cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFu
c2xhdGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVl
TGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgyMCwgMjApOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRM
YXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAw
LCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFy
ZW50KTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVy
TGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJv
dW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDUwLCA1MCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDUwLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoNTAsIDQ5LCA1MCwg
NTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUwLCA1MCkpKTsKKworICAgICAgICBv
Y2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
NDksIDUwLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDUwLCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDUw
LCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTAsIDUwLCA1MCkp
LmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUwLCAxLCA1
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA1
MCwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA0OSwgNTAs
IDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNDks
IDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDQ5LCA1
MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDUw
LCA0OSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUxLCA0OSwg
NTAsIDUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
NTEsIDQ5LCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA1
MCwgMSwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVj
dCg1MSwgNTAsIDUwLCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwg
NTEsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDUxLCA1MSwgNTAsIDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUw
LCAxMDAsIDUwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoNTAsIDUxLCA1MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
NDksIDUxLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCg0OSwgNTEsIDUwLCA1MCkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVs
dExheWVyU2Npc3NvclJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTAsIDUwLCA1MCwgNTApKS5pc0VtcHR5
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDQ5LCA1MCwgMSwgNTApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg0OSwgNTAsIDUwLCA1
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0OSwgNDksIDUwLCA1MCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDQ5LCA0OSwgNTAs
IDUwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA0OSwgNTAsIDEpLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNDksIDUw
LCA1MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MSwgNDksIDQ5LCAxKSwg
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNTEsIDQ5LCA1
MCwgNTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDUxLCA1MCwgNTAsIDUwKSkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoNTEsIDUxLCA1MCwgNTApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCg1MCwgNTEsIDUw
LCA1MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNDksIDUx
LCAxLCA0OSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDQ5LCA1MSwgNTAsIDUwKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICB9Cit9OwogCi0gICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50
LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUp
OworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RUcmFu
c2xhdGVkQ2hpbGQpOwogCi0gICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Ci0gICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJl
Y3QoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBi
b29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90
YXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxh
eWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUo
OTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0g
dGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBj
aGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9p
bnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza3NU
b0JvdW5kcyh0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVy
LmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIo
bGF5ZXIpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQo
KSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkp
KTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5T
Y3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMCwgNDMwLCA2MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25J
blRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCg5LCA0
MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjEsIDcwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0
MzAsIDYwLCA3MSkpKTsKKworICAgICAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3Nv
clJlY3QoKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQyOSwgNjAsIDcw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJl
Y3QoMTAsIDQzMCwgNjEsIDcwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcxKSkpOworICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAg
ICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOworICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVuZGVy
U3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNl
KHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDMwLCA0MCwgNzAsIDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
Ym91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDAsIDcwLCA2MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjksIDQw
LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDMwLCAzOSwgNzAsIDYwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMzAsIDQx
LCA3MCwgNjApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JS
ZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIElu
dFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2
MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50
UmVjdCgzMSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKwor
ICAgICAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxh
eWVyfDoKKyAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlz
aWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KKyAgICAgICAgICB8ICAgIDMwICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgICB8IDMwICsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKKyAgICAgIDEwMCB8ICAgIHwgIDEwICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgID09PiAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAg
ICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgIHwxMCstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgIDQy
MCAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3wgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICArLS0tLXwtLXwtLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgKy0tfC0tfC0tLS0tLS0tLS0tLS0tLSsgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgIDIwfDEwfCAgICAgNzAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8NTAwICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgIHwKKyAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwxMHwKKyAgICAgICAgICAgICAgICstLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyB8ICAgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLXwtLSsKKyAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgNDkwICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUwMCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwCisgICAgICAgICAqLwor
ICAgIH0KK307CiAKLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkKTsKIAotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKLX0KK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29s
IG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3
b1RpbWVzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTAp
OworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0
ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQgPSB0aGlz
LT5jcmVhdGVMYXllcihwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCks
IEludFNpemUoNTAwLCA1MDApKTsKKyAgICAgICAgY2hpbGQtPnNldE1hc2tzVG9Cb3VuZHModHJ1
ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICAvLyB8Y2hp
bGQyfCBtYWtlcyB8cGFyZW50fCdzIHN1cmZhY2UgZ2V0IGNvbnNpZGVyZWQgYnkgQ0NPY2NsdXNp
b25UcmFja2VyIGZpcnN0LCBpbnN0ZWFkIG9mIHxjaGlsZHwncy4gVGhpcyBleGVyY2lzZXMgZGlm
ZmVyZW50IGNvZGUgaW4KKyAgICAgICAgLy8gbGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UsIGFz
IHRoZSB0YXJnZXQgc3VyZmFjZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4uCisgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgzMCwgMzApLCBJ
bnRTaXplKDYwLCAyMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQp
OworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KC0xMCwgLTEwLCAxMDAwLCAxMDAwKSk7CiAKLVRFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RP
dmVyQ3VsbGVkVGlsZSwgbGF5ZXJTY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlKTsKKyAgICAgICAg
b2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZDIpOwog
Ci12b2lkIHNjcmVlblNjaXNzb3JSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMp
Ci17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5
ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9
IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAg
ICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBh
cmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDYwLCAyMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNjAsIDIwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24u
b2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCksIG9jY2x1c2lvbi5v
Y2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
dSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
KworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3Qo
MTAsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBJbnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgx
MSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgICAgIG9jY2x1c2lv
bi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2
MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwg
SW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMSwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwg
NzApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTEw
LCAtMTAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDEwLCA0MzAsIDYwLCA3MCkpLmlzRW1w
dHkoKSk7CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxpdHRsZSBwaWVjZSBub3Qgb2NjbHVkZWQg
YnkgY2hpbGQyCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoOSwgNDMwLCAxLCAxMCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2
MCwgNzApKSk7CisgICAgICAgIC8vIFRoaXMgZXh0ZW5kcyBwYXN0IGJvdGggc2lkZXMgb2YgY2hp
bGQyLCBzbyBpdCB3aWxsIGJlIHRoZSBvcmlnaW5hbCByZWN0LgorICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDksIDQzMCwgNjAsIDgwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChjaGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA4MCkpKTsKKyAgICAgICAgLy8gVGhpcyBl
eHRlbmRzIHBhc3QgdHdvIGFkamFjZW50IHNpZGVzIG9mIGNoaWxkMiwgYW5kIHNob3VsZCBpbmNs
dWRlZCB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNpZGUuCisgICAgICAgIC8vIFRoaXMg
YWxzbyBkZW1vbnN0cmF0ZXMgdGhhdCB0aGUgcmVjdCBjYW4gYmUgYXJiaXRyYXJ5IGFuZCBkb2Vz
IG5vdCBnZXQgY2xpcHBlZCB0byB0aGUgbGF5ZXIncyB2aXNpYmxlTGF5ZXJSZWN0KCkuCisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAsIDIwLCA3MCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoLTEwLCA0MzAsIDYwLCA3MCkpKTsK
KyAgICAgICAgLy8gVGhpcyBleHRlbmRzIHBhc3QgdGhyZWUgYWRqYWNlbnQgc2lkZXMgb2YgY2hp
bGQyLCBzbyBpdCBzaG91bGQgY29udGFpbiB0aGUgdW5vY2NsdWRlZCBwYXJ0cyBvZiBlYWNoIHNp
ZGUuIFRoZSBsZWZ0CisgICAgICAgIC8vIGFuZCBib3R0b20gZWRnZXMgYXJlIGNvbXBsZXRlbHkg
dW5vY2NsdWRlZCBmb3Igc29tZSByb3cvY29sdW1uIHNvIHdlIGdldCBiYWNrIHRoZSBvcmlnaW5h
bCBxdWVyeSByZWN0LgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KC0xMCwgNDMwLCA2
MCwgODApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KC0x
MCwgNDMwLCA2MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQy
OSwgNjAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0
KDEwLCA0MjksIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg3MCwg
NDMwLCAxLCA3MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJl
Y3QoMTEsIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCA1MDAsIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50
UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRM
YXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMCwgNjAsIDcwKSkuaXNFbXB0eSgp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChj
aGlsZCwgSW50UmVjdCg5LCA0MzAsIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoOSwg
NDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
dW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgNzApKS5p
c0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLCBJbnRSZWN0KC0xMCwgNDMwLCA2MCwgODApKS5pc0VtcHR5KCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGNoaWxkLCBJ
bnRSZWN0KDEwLCA0MjksIDYwLCA3MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTEsIDQzMCwg
NjAsIDcwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKS5pc0VtcHR5
KCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIoY2hpbGQpOworICAgICAgICAvLyB8Y2hpbGQyfCBzaG91bGQgZ2V0IG1lcmdlZCB3aXRoIHRo
ZSBzdXJmYWNlIHdlIGFyZSBsZWF2aW5nIG5vdworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRU
YXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMnUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMzAsIDMwLCA3MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoOTAsIDMwLCAxMCwgMTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDcwLCA3MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCAzMCwgNjAsIDEwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
OSwgMzAsIDYwLCAxMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDI5LCA2MCwgMTApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMxLCAzMCwgNjAsIDEwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMw
LCAzMSwgNjAsIDEwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgMzksIDcwLCA2MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMzAsIDYwLCAxMCkpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjksIDMwLCAxLCAxMCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDI5LCAzMCwgNjAsIDEw
KSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAyOSwgNjAsIDEpLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgMjksIDYwLCAx
MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg5MCwgMzAsIDEsIDEwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDMwLCA2MCwg
MTApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDMwLCAzMSwgNjAsIDEwKSkuaXNFbXB0eSgpKTsKKworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgzMCwgNDAsIDcwLCA2MCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMjksIDQwLCAxLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDI5LCA0MCwgNzAsIDYwKSkpOworICAgICAgICAvLyBUaGlzIHJlY3Qg
aXMgbW9zdGx5IG9jY2x1ZGVkIGJ5IHxjaGlsZDJ8LgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDkwLCAzOSwgMTAsIDEpLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgzMCwgMzksIDcwLCA2MCkpKTsKKyAgICAgICAgLy8gVGhpcyByZWN0IGV4
dGVuZHMgcGFzdCB0b3AvcmlnaHQgZW5kcyBvZiB8Y2hpbGQyfC4KKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMjksIDcwLCAxMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDMwLCAyOSwgNzAsIDcwKSkpOworICAgICAgICAvLyBUaGlz
IHJlY3QgZXh0ZW5kcyBwYXN0IGxlZnQvcmlnaHQgZW5kcyBvZiB8Y2hpbGQyfC4KKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMzksIDgwLCA2MCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwLCAzOSwgODAsIDYwKSkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgNDAsIDEsIDYwKSwgb2NjbHVzaW9uLnVub2Nj
bHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzEsIDQwLCA3MCwgNjApKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDEwMCwgNzAsIDEpLCBvY2NsdXNpb24udW5v
Y2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgzMCwgNDEsIDcwLCA2MCkpKTsKKwor
ICAgICAgICAvKiBKdXN0aWZpY2F0aW9uIGZvciB0aGUgYWJvdmUgb2NjbHVzaW9uIGZyb20gfGxh
eWVyfDoKKyAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwzMCAgVmlz
aWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KKyAgICAgICAgICB8ICAgIDMwICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgcm90YXRlKDkwKSAgICAgICAgICAgICAgICAgfCAgICAgMzAgICA2
MCAgICAgICAgIHwgICAgfGNoaWxkMnw6IFxcXFxcCisgICAgICAgICAgfCAzMCArIC0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgIDMwICstLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAxMDAgfCAgICB8ICAxMCAgICAg
ICAgIHwgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICA9PT4gICAgIHwgICAgIHxcXFxc
XFxcXFxcXFx8ICB8MTAgICAgICAgICAgICAgICB8CisgICAgICAgICAgfCAgICB8MTArLS0tLS0t
LS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgIHwgICstLXxcXFxc
XFxcXFxcXFx8LS0tLS0tLS0tLS0tLS0tLS0rICB8CisgICAgICAgICAgfCAgICArIC0tLS0tLS0t
LS0tLSsgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgICstLS0t
LS0tLS0tLS0rLy98ICAgICA0MjAgICAgICB8ICB8CisgICAgICAgICAgfCAgICB8ICB8ICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8v
Ly8vLy8vLy8vLy98NjAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgfCAgICB8ICB8ICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8v
Ly8vLy8vLy8vLy98ICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgKy0tLS18LS18LS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICstLXwtLXwtLS0t
LS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAyMHwxMHwgICAg
IDcwICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfDUwMCAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8MTB8CisgICAgICAgICAgICAgICArLS18LS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfCAgICAgICAgICAgICAgICAgICAgIHwgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0rCisgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgIDQ5MCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDUwMAorICAgICAgICAgKi8KKyAgICB9Cit9OwogCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0
ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5z
ZXRGaWx0ZXJzKGZpbHRlcnMpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3b1RpbWVzKTsKIAotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwordGVtcGxhdGU8
Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdFN1cmZhY2VSb3RhdGVkT2ZmQXhpcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgp
CisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKKyAg
ICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAgICAgICAgY2hpbGRU
cmFuc2Zvcm0ucm90YXRlKDk1KTsKKyAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0y
NTAsIC0yNTApOworCisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3Jt
OworICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMTAsIDEwKTsKKworICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9v
dCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNy
ZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCkpOworICAgICAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsK
KyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0Yyhw
YXJlbnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBJbnRS
ZWN0IGNsaXBwZWRMYXllckluQ2hpbGQgPSBsYXllclRyYW5zZm9ybS5tYXBSZWN0KGxheWVyLT52
aXNpYmxlTGF5ZXJSZWN0KCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgpLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJl
Y3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoY2xpcHBlZExheWVySW5DaGls
ZCwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNF
bXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5D
aGlsZCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIGNsaXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNs
aXBwZWRMYXllckluQ2hpbGQubW92ZSgxLCAwKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGls
ZC5tb3ZlKDEsIDApOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkLCBjbGlwcGVkTGF5ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNF
bXB0eSgpKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKC0xLCAwKTsKKyAgICAg
ICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgY2xpcHBlZExheWVySW5DaGlsZCkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIGNs
aXBwZWRMYXllckluQ2hpbGQpLmlzRW1wdHkoKSk7CisgICAgICAgIGNsaXBwZWRMYXllckluQ2hp
bGQubW92ZSgwLCAxKTsKKyAgICAgICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIDEpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkLCBjbGlwcGVkTGF5
ZXJJbkNoaWxkKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgY2xpcHBlZExheWVySW5DaGlsZCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgY2xpcHBlZExheWVySW5DaGlsZC5tb3ZlKDAsIC0xKTsKKworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQpOworICAgICAgICBvY2NsdXNpb24uZmluaXNo
ZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNoaWxkLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRh
cmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCg3NSwgNTUsIDEs
IDEpKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNzUsIDU1LCAxLCAxKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoNzUsIDU1LCAxLCAx
KSkpOworICAgIH0KK307CiAKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
ZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7CitBTExf
Q0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VSb3Rh
dGVkT2ZmQXhpcyk7CiAKLSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJl
Y3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFy
ZW50LT5zZXRDbGlwUmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRz
KCkpKTsKLSAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwordGVtcGxh
dGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdFN1cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW4gOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFu
c2Zvcm07CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CisgICAg
ICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMjUwLCAtMjUwKTsKKworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOworICAgICAgICB0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlKiBjaGlsZCA9IHRoaXMtPmNyZWF0ZUxheWVyKHBhcmVudCwgY2hpbGRU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCkpOworICAgICAg
ICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGls
ZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
bGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSk7CisgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hp
bGQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcjIpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5
ZXIobGF5ZXIxKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAs
IDYwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDQzMCwgNjAs
IDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChjaGlsZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoOSwgNDMwLCA2MCwgNzApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQsIEludFJlY3QoMTAs
IDQyOSwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZCwgSW50UmVjdCgxMCwgNDMxLCA2MCwgNzApKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChjaGls
ZCwgSW50UmVjdCgxMCwgNDMwLCA2MCwgNzApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDksIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KGNoaWxkLCBJbnRSZWN0KDksIDQzMCwgNjAsIDcwKSkpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwLCA0MjksIDYwLCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChjaGlsZCwgSW50UmVjdCgxMCwgNDI5LCA2MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9FUV9SRUNUKEludFJlY3QoNzAsIDQzMCwgMSwgNzApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNoaWxkLCBJbnRSZWN0KDExLCA0MzAsIDYwLCA3MCkpKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNTAwLCA2MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVk
Q29udGVudFJlY3QoY2hpbGQsIEludFJlY3QoMTAsIDQzMSwgNjAsIDcwKSkpOworCisgICAgICAg
IG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihjaGlsZCk7CisgICAgICAgIG9jY2x1
c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQsIGNoaWxkLT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MzAsIDQwLCA3MCwgNjApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgz
MCwgNDAsIDcwLCA2MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3Vu
ZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0
U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSkpOworICAgICAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyOSwgNDAsIDcw
LCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMzAsIDM5LCA3MCwgNjApKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAsIDQwLCA3MCwgNjAp
KS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDI5LCA0MCwgMSwg
NjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyOSwg
NDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzksIDcw
LCAxKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMzAs
IDM5LCA3MCwgNjApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCA0MCwg
MSwgNjApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgz
MSwgNDAsIDcwLCA2MCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMTAw
LCA3MCwgMSksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDMwLCA0MSwgNzAsIDYwKSkpOworCisgICAgICAgIC8qIEp1c3RpZmljYXRpb24gZm9yIHRoZSBh
Ym92ZSBvY2NsdXNpb24gZnJvbSB8bGF5ZXIxfCBhbmQgfGxheWVyMnw6CisKKyAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyMXw6IC8vLy8vCisgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICB8ICAgIFZpc2libGUgcmVnaW9uIG9mIHxsYXllcjJ8OiBcXFxcXAor
ICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAg
ICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgfDEwICAgICAgICAgICAgICAgfAorICAgICAg
ICAgICB8ICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKyAgfAorICAgICAgICAg
ICB8ICB8ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgNDIwICAgICAgfCAgfAorICAgICAgICAgICB8
ICB8ICB8XFxcXFxcXFxcXFxcfC8vfDYwICAgICAgICAgICAgfCAgfAorICAgICAgICAgICB8ICB8
ICB8XFxcXFxcXFxcXFxcfC8vfCAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICArLS18LS18
LS0tLS0tLS0tLS0tfC0tKyAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgMjB8MTB8ICAg
ICA3MCAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgfCAgfAorICAgICAgICAgICAgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgfDEwfAorICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0t
LS0tLS0tfC0tKworICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCA0OTAgICAgICAgICAg
ICAgfAorICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwor
ICAgICAgICAgICAgICAgICAgICAgNjAgICAgICAgICAgICAgICA0NDAKKyAgICAgICAgICovCisg
ICAgfQorfTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbik7CiAKLSAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzIDogcHVibGlj
IENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVk
OgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUw
LCAyNTApOworICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOworICAgICAgICBjaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
OworICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZDEgPSB0aGlzLT5jcmVh
dGVTdXJmYWNlKHBhcmVudCwgY2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSgxMCwgMTApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQy
ID0gdGhpcy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQsIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDIwLCA0MCksIEludFNpemUoMTAsIDEwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250
ZW50TGF5ZXJUeXBlKiBsYXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQxLCB0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgtMTAsIC0xMCksIEludFNpemUoNTEwLCA1
MTApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxh
eWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAg
ICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgtMjAsIC0yMCwgMTAwMCwgMTAwMCkpOwogCi0gICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyLmdldCgpKTsKLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50TGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQy
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIyKTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5
ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMjAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwg
ODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJ
bnRSZWN0KC0xMSwgNDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQyLCBJbnRSZWN0KC0xMCwgNDIw
LCA3MSwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hp
bGQyLCBJbnRSZWN0KC0xMCwgNDIwLCA3MCwgODEpKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVz
ZURlZmF1bHRMYXllclNjaXNzb3JSZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTEsIDQyMCwg
NzAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQy
LCBJbnRSZWN0KC0xMCwgNDE5LCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMiwgSW50UmVjdCgtMTAsIDQy
MCwgNzAsIDgxKSkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KC0yMCwgLTIwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKGNoaWxkMik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdl
dFJlbmRlclN1cmZhY2UoY2hpbGQyLCBjaGlsZDItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAg
IG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UoY2hpbGQx
LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIobGF5ZXIxKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwg
ODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgydSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoLTEwLCA0MzAs
IDgwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMSwgNDMwLCA4MCwg
NzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJ
bnRSZWN0KC0xMCwgNDI5LCA4MCwgNzApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMwLCA4MSwgNzApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoY2hpbGQxLCBJbnRSZWN0KC0xMCwgNDMw
LCA4MCwgNzEpKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KGNoaWxkMSk7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
Y2hpbGQxLCBjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2
ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMjAsIDgwLCA4MCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMnUsIG9j
Y2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworICAgICAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwLCAyMCwgODAsIDgwKSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJ1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
LCAyMCwgODAsIDgwKSkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMzAsIDIwLCA3MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDI5LCAyMCwgNzAsIDgwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgz
MCwgMTksIDcwLCA4MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwLCAzMCwgODAsIDcwKSkpOworICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxOSwgMzAsIDgwLCA3MCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MjAsIDI5LCA4MCwgNzApKSk7CisKKyAgICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFi
b3ZlIG9jY2x1c2lvbjoKKyAgICAgICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwgICAgMjAgICAgICAgICAgICAgICB8ICAgICAg
IGxheWVyMQorICAgICAgICAgIHwgIDMwKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgICAxMDAgfCAgMzB8ICAgICAgICAgICAgICAgIHwgICAgIGxheWVyMiAgICAgIHwK
KyAgICAgICAgICB8MjArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfAorICAg
ICAgICAgIHwgIHwgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCB8CisgICAgICAg
ICAgfCAgfCB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICB8
ICB8IHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICstLXwt
fC0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgNTEwCisgICAgICAgICAgICAgfCB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS18LSsKKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEwCisgICAgICAgICAqLworICAgIH0KK307CiAK
LSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJT
dXJmYWNlKCkpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tl
clRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5ncyk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci19Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFx
dWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0T3ZlcmxhcHBpbmdTdXJmYWNl
U2libGluZ3NXaXRoVHdvVHJhbnNmb3JtcyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgp
CisgICAgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDFUcmFuc2Zvcm07Cisg
ICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOworICAgICAgICBjaGls
ZDFUcmFuc2Zvcm0ucm90YXRlKC05MCk7CisgICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xh
dGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQyVHJh
bnNmb3JtOworICAgICAgICBjaGlsZDJUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKKyAg
ICAgICAgY2hpbGQyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGNoaWxkMlRyYW5zZm9y
bS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CisKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSogY2hpbGQxID0gdGhpcy0+Y3JlYXRlU3VyZmFjZShwYXJlbnQs
IGNoaWxkMVRyYW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMjApLCBJbnRTaXplKDEwLCAxMCkpOwor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBjaGlsZDIgPSB0aGlzLT5jcmVhdGVT
dXJmYWNlKHBhcmVudCwgY2hpbGQyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDIwLCA0MCksIEludFNp
emUoMTAsIDEwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBs
YXllcjEgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoY2hpbGQxLCB0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgtMTAsIC0yMCksIEludFNpemUoNTEwLCA1MTApLCB0cnVlKTsKKyAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyMiA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxj
RHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNp
b24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAwKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDItPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihs
YXllcjIpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAsIDMwLCA4MCwgNzAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgtMTAsIDQyMCwgNzAsIDgw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChj
aGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTExLCA0MjAsIDcwLCA4MCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3Qo
LTEwLCA0MTksIDcwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2Ns
dWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcxLCA4MCkpKTsKKyAgICAgICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChjaGlsZDIsIEludFJlY3QoLTEwLCA0MjAsIDcwLCA4
MSkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQy
KTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDIs
IGNoaWxkMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJn
ZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEtPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcjEpOworCisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkpOwog
Ci1URVNUX09QQVFVRV9BTkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9z
Y3JlZW5TY2lzc29yUmVjdE92ZXJDdWxsZWRUaWxlLCBzY3JlZW5TY2lzc29yUmVjdE92ZXJDdWxs
ZWRUaWxlKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwg
SW50UmVjdCg0MjAsIC0yMCwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVz
aW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MTksIC0yMCwgODAsIDkwKSkpOworICAgICAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjAsIC0y
MSwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGNo
aWxkMSwgSW50UmVjdCg0MjAsIC0xOSwgODAsIDkwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
b2NjbHVzaW9uLm9jY2x1ZGVkKGNoaWxkMSwgSW50UmVjdCg0MjEsIC0yMCwgODAsIDkwKSkpOwog
Ci12b2lkIGxheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJz
KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExh
eWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChw
YXJlbnRMYXllcik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJP
cGVyYXRpb25zIGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7
Ci0gICAgbGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVt
bXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7Ci0KLSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwg
ZHVtbXlNYXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKLQotICAgIG9jY2x1c2lvbi5l
bnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBF
WFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVj
dCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRD
b250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShD
Q09jY2x1c2lvblRyYWNrZXJUZXN0X2xheWVyU2Npc3NvclJlY3RPdmVyUGFydGlhbFRpbGVzLCBs
YXllclNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcyk7Ci0KLXZvaWQgc2NyZWVuU2Npc3NvclJl
Y3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRvcHRSZWYobmV3IExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJlZlB0cjxMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJD
aHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXllcik7Ci0gICAgcGFy
ZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7Ci0g
ICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7Ci0g
ICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5ZXItPnNldEZpbHRl
cnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5n
ZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNl
LCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAw
KSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUx
MjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDUwLCA1MCwg
MjAwLCAyMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5
ZXItPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9G
QUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0K
LSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAg
IG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZh
Y2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXll
ci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwg
MTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAx
MDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOwotCi0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgb2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgw
LCAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCA1
MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIw
MCwgMTAwLCA1MCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQu
Z2V0KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci19Ci0KLVRF
U1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVl
blNjaXNzb3JSZWN0T3ZlclBhcnRpYWxUaWxlcywgc2NyZWVuU2Npc3NvclJlY3RPdmVyUGFydGlh
bFRpbGVzKTsKLQotdm9pZCBsYXllclNjaXNzb3JSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFxdWVM
YXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFy
ZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBs
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENo
aWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0gICAg
VmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGlu
dCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJmYWNl
KCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygp
LCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBlbmQo
cGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5ZXJM
aXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIg
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwotICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSk7Ci0KLSAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwot
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAw
KSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVu
ZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnRMYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAw
LCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAs
IDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDIw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAy
MDAsIDEwMCwgMTAwKSkpOwotCi0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpLmlzRW1wdHko
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIElu
dFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotfQotCi1URVNUX09QQVFVRV9BTkRfUEFJTlRF
RF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0T3Zlck5vVGls
ZXMsIGxheWVyU2Npc3NvclJlY3RPdmVyTm9UaWxlcyk7Ci0KLXZvaWQgc2NyZWVuU2Npc3NvclJl
Y3RPdmVyTm9UaWxlcyhib29sIG9wYXF1ZUxheWVycykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRMYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNo
cm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQocGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+
YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZp
bHRlcnMub3BlcmF0aW9ucygpLmFwcGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uOjpjcmVhdGUoMC41LCBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBh
cmVudExheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZp
bHRlcnMpOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0g
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3Bh
cXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRy
dWUsIG9wYXF1ZUxheWVycyk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4gZHVtbXlMYXllckxpc3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0K
LSAgICBwYXJlbnQtPnJlbmRlclN1cmZhY2UoKS0+c2V0Q29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcGFyZW50LT5zZXRDbGlwUmVj
dChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChwYXJlbnQpOwotCi0gICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgp
LCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwotCi0g
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCg1MDAsIDUwMCwgMTAw
LCAxMDApKTsKLQotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXIt
PnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRS
ZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
LSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVy
LmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAs
IDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
MTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5n
ZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCks
IEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAs
IDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50
LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci19Ci0KLVRF
U1RfT1BBUVVFX0FORF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X3NjcmVl
blNjaXNzb3JSZWN0T3Zlck5vVGlsZXMsIHNjcmVlblNjaXNzb3JSZWN0T3Zlck5vVGlsZXMpOwot
Ci12b2lkIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbihib29sIG9wYXF1ZUxheWVy
cykKLXsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBwYXJlbnRM
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVy
ID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwot
ICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQo
cGFyZW50TGF5ZXIpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoY2hpbGQxKTsKKyAgICAgICAgb2NjbHVzaW9u
LmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjaGlsZDEsIGNoaWxkMS0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAg
ICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAg
ICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVy
cyhmaWx0ZXJzKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4
MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMo
KS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVj
dHMoKS5zaXplKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMTAsIDIwLCA5MCwgODApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDksIDIwLCA5MCwgODApKSk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwLCAx
OSwgOTAsIDgwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMSwgMjAsIDkwLCA4MCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAsIDIxLCA5MCwgODApKSk7CisKKyAg
ICAgICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3ZlIG9jY2x1c2lvbjoKKyAgICAgICAg
ICAgICAgICAgICAgICAxMDAKKyAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisg
ICAgICAgICAgICB8MjAgICAgICAgICAgICAgICAgICAgfCAgICAgICBsYXllcjEKKyAgICAgICAg
ICAgMTArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgMTAwIHx8
IDMwICAgICAgICAgICAgICAgICB8ICAgICBsYXllcjIgIHwKKyAgICAgICAgICAgIHwyMCstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgfHwgfCAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgfCB8CisgICAgICAgICAgICB8fCB8ICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgIHx8IHwgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgK3wtfC0tLS0tLS0tLS0tLS0tLS0tLSsg
ICAgICAgICAgICAgfCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8IHwgNTEwCisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUxMCB8IHwKKyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgfAorICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCB8CisgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwK
KyAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfAorICAg
ICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICA1MjAgICAgICAgICAgICAgfCB8CisgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNTEwCisgICAgICAgICAqLworICAgIH0KK307CiAKLSAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JU
ZXN0aW5nKHBhcmVudExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDEwMCwgMTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1ZUxheWVycyk7CitB
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE92ZXJsYXBw
aW5nU3VyZmFjZVNpYmxpbmdzV2l0aFR3b1RyYW5zZm9ybXMpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRl
eHR1cmVTaXplID0gNTEyOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJz
PgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEZpbHRlcnMgOiBwdWJsaWMgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9p
ZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJU
cmFuc2Zvcm07CisgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7Cisg
ICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CisgICAgICAgIGxheWVyVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKIAotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5z
ZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkp
KTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVu
dCk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0
aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDEwMCwgMTAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBibHVyTGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRy
YW5zZm9ybSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBvcGFjaXR5TGF5ZXIgPSB0
aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCBsYXllclRyYW5zZm9ybSwgRmxvYXRQb2lu
dCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBvcGFxdWVMYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdM
YXllcihwYXJlbnQsIGxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlKTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1
bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0
aW9ucyBmaWx0ZXJzOworICAgICAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgxMCwgV2ViQ29yZTo6UGVyY2VudCksIEZpbHRl
ck9wZXJhdGlvbjo6QkxVUikpOworICAgICAgICBibHVyTGF5ZXItPnNldEZpbHRlcnMoZmlsdGVy
cyk7CiAKLSAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFKSk7
CisgICAgICAgIG9wYXF1ZUxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwogCi0gICAgb2NjbHVz
aW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgZmlsdGVycy5vcGVyYXRpb25zKCkuY2xlYXIoKTsKKyAgICAgICAgZmlsdGVycy5vcGVy
YXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWSkpOworICAgICAgICBvcGFjaXR5TGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7CiAKLSAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0
ZWQgd2hlbiBkcmF3biBpbnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2
ZW4gZnJvbSB0aGUgdGFyZ2V0IHN1cmZhY2UKLSAgICAvLyBpcyBub3QgaW4gdGhhdCB0YXJnZXQg
c3BhY2UsIHRoZW4gYWZ0ZXIgdHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkgcmVjdHMgaW50byB0aGUg
dGFyZ2V0LCB0aGV5IHdpbGwgZmFsbCBvdXRzaWRlCi0gICAgLy8gdGhlIHNjaXNzb3IgYW5kIGJl
IGNvbnNpZGVyZWQgb2NjbHVkZWQuCi0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllci5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwotfQor
ICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9sYXllclNjaXNzb3JSZWN0Rm9yTGF5
ZXJPZmZPcmlnaW4sIGxheWVyU2Npc3NvclJlY3RGb3JMYXllck9mZk9yaWdpbik7CisgICAgICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5
cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAotdm9pZCBkYW1hZ2VSZWN0T3ZlclRpbGUoYm9vbCBv
cGFxdWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gcGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQt
PmFkZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAg
ICAgICAgLy8gT3BhY2l0eSBsYXllciB3b24ndCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShvcGFjaXR5TGF5ZXItPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihvcGFjaXR5TGF5ZXIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJT
dXJmYWNlKG9wYWNpdHlMYXllciwgb3BhY2l0eUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0g
ICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJzOwotICAgIGZpbHRlcnMub3BlcmF0aW9ucygpLmFw
cGVuZChCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoMC41LCBG
aWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSkpOwotICAgIHBhcmVudExheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOwotICAgIGxheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHkoKSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5p
c0VtcHR5KCkpOwogCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwg
b3BhcXVlTGF5ZXJzKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCks
IHRydWUsIG9wYXF1ZUxheWVycyk7CisgICAgICAgIC8vIEFuZCBoYXMgbm90aGluZyB0byBjb250
cmlidXRlIHRvIGl0cyBwYXJlbnQgc3VyZmFjZS4KKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5pc0VtcHR5KCkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
aXNFbXB0eSgpKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1t
eUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsKKyAgICAgICAg
Ly8gT3BhcXVlIGxheWVyIHdpbGwgY29udHJpYnV0ZSB0byBvY2NsdXNpb24uCisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uob3BhcXVlTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihvcGFxdWVM
YXllcik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uob3Bh
cXVlTGF5ZXIsIG9wYXF1ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgcGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwg
MzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDQz
MCwgNzAsIDcwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJm
YWNlKCkucmVjdHMoKS5zaXplKCkpOwogCi0gICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOworICAgICAgICAvLyBBbmQg
aXQgZ2V0cyB0cmFuc2xhdGVkIHRvIHRoZSBwYXJlbnQgc3VyZmFjZS4KKyAgICAgICAgb2NjbHVz
aW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OworCisgICAgICAgIC8vIFRoZSBibHVyIGxheWVyIG5lZWRzIHRvIHRocm93IGF3YXkgYW55IG9j
Y2x1c2lvbiBmcm9tIG91dHNpZGUgaXRzIHN1YnRyZWUuCisgICAgICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UoYmx1ckxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHko
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5pc0VtcHR5KCkpOworCisgICAgICAgIC8vIEFuZCBpdCB3b24ndCBjb250cmlidXRlIHRv
IG9jY2x1c2lvbi4KKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGJs
dXJMYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uo
Ymx1ckxheWVyLCBibHVyTGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuaXNFbXB0eSgpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmlzRW1w
dHkoKSk7CisKKyAgICAgICAgLy8gQnV0IHRoZSBvcGFxdWUgbGF5ZXIncyBvY2NsdXNpb24gaXMg
cHJlc2VydmVkIG9uIHRoZSBwYXJlbnQuCisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0
UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgzMCwgMzAsIDcwLCA3MCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdl
dFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICB9Cit9OwogCi0g
ICAgVGVzdERhbWFnZUNsaWVudCBkYW1hZ2UoRmxvYXRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
OwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCksICZkYW1hZ2UpOworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVz
aW9uVHJhY2tlclRlc3RGaWx0ZXJzKTsKIAotICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRl
clN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywg
Ym9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lz
c29yUmVjdE91dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVz
LCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAg
eworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhp
cy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7
CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAs
IDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JS
ZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxl
YXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAg
ICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAx
MDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVk
KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAw
LCAxMDApKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5n
ZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVy
U2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQpOwogCi0gICAgLy8gT3V0c2lkZSB0aGUgbGF5ZXIncyBj
bGlwIHJlY3QuCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgp
LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBi
b29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lz
c29yUmVjdE91dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVz
LCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAg
eworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhp
cy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KTsKKyAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFj
ZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwg
MTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLnVzZURlZmF1bHRMYXllclNjaXNzb3JS
ZWN0KCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNj
aXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2
ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChw
YXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3Qo
MCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAyMDAsIDEwMCwg
MTAwKSkpOworCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDEwMCwg
MTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworQUxMX0ND
T0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29y
UmVjdE91dHNpZGVDaGlsZCk7CiAKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAw
LCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJV
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Cit0ZW1wbGF0ZTxjbGFz
cyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
RGFtYWdlUmVjdE91dHNpZGVDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5
cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisg
ICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0g
dGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBvY2NsdXNpb24ubGVh
dmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBUZXN0RGFtYWdlQ2xpZW50PHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gZGFt
YWdlKEZsb2F0UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6
OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSwg
JmRhbWFnZSk7CiAKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOwotfQorICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogCi1URVNUX09QQVFVRV9BTkRfUEFJ
TlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlclRpbGUsIGRh
bWFnZVJlY3RPdmVyVGlsZSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSkuaXNFbXB0eSgp
KTsKIAotdm9pZCBkYW1hZ2VSZWN0T3ZlckN1bGxlZFRpbGUoYm9vbCBvcGFxdWVMYXllcnMpCi17
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAg
IFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gcGFyZW50TGF5ZXIg
PSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0g
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBw
YXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKHBhcmVu
dExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZl
VG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKIAotICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQo
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVy
T3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhmaWx0
ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9Owog
Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnRMYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCBmYWxzZSwgb3BhcXVlTGF5ZXJz
KTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUsIG9wYXF1
ZUxheWVycyk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2Vy
VGVzdERhbWFnZVJlY3RPdXRzaWRlQ2hpbGQpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNo
cm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXpl
ID0gNTEyOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQgOiBwdWJsaWMg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6
CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJT
Y2lzc29yUmVjdChJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworCisgICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQo
bGF5ZXIsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAw
LCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgfQorfTsKIAotICAgIHBhcmVu
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3Qo
SW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VM
YXllckxpc3QuYXBwZW5kKHBhcmVudCk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyQ2hpbGQpOwogCi0gICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3Mg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkIDogcHVibGlj
IENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVk
OgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFy
ZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2Ns
dXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwor
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1
cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAw
LCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAw
KSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9u
Lm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307CiAKLSAgICBUZXN0
RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7Ci0gICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSwgJmRhbWFnZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3ZlckNoaWxkKTsKIAotICAgIG9jY2x1c2lvbi5lbnRl
clRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTxj
bGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0RGFtYWdlUmVjdE92ZXJDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5
cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisg
ICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0g
dGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7
CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICBFWFBFQ1RfVFJVRShv
Y2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0
KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVk
KGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIFRlc3REYW1hZ2VDbGllbnQ8dHlwZW5hbWUgVHlwZXM6OlJlbmRl
clN1cmZhY2VUeXBlPiBkYW1hZ2UoRmxvYXRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpOworICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRC
ZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJU
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNl
KCkpOwogCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdl
dCgpLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkp
OwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwg
SW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJ
bnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24u
b2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIElu
dFJlY3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChs
YXllciwgSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKIAotICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lv
bi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CiAK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7Ci19CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OwogCi1URVNUX09QQVFVRV9B
TkRfUEFJTlRFRF9PUEFRVUUoQ0NPY2NsdXNpb25UcmFja2VyVGVzdF9kYW1hZ2VSZWN0T3ZlckN1
bGxlZFRpbGUsIGRhbWFnZVJlY3RPdmVyQ3VsbGVkVGlsZSk7CitBTExfQ0NPQ0NMVVNJT05UUkFD
S0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJlY3RPdmVyQ2hpbGQpOwogCi12
b2lkIGRhbWFnZVJlY3RPdmVyUGFydGlhbFRpbGVzKGJvb2wgb3BhcXVlTGF5ZXJzKQotewotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxM
YXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IHBhcmVudExheWVyID0gYWRv
cHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIFJl
ZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJl
ZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChwYXJlbnRMYXll
cik7Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBGaWx0ZXJPcGVyYXRpb25z
IGZpbHRlcnM7Ci0gICAgZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSgwLjUsIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFKSk7Ci0gICAgcGFyZW50TGF5ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0gICAgbGF5
ZXItPnNldEZpbHRlcnMoZmlsdGVycyk7Ci0KLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0
aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudExh
eWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIGZhbHNlLCBvcGFxdWVMYXllcnMpOwotICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDIwMCwgMjAwKSwgdHJ1ZSwgb3BhcXVlTGF5ZXJzKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0
dXJlU2l6ZSA9IDUxMjsKLQotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50
UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBw
YXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3Vu
ZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAg
ICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJp
bGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhU
ZXh0dXJlU2l6ZSk7Ci0KLSAgICBUZXN0RGFtYWdlQ2xpZW50IGRhbWFnZShGbG9hdFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCkpOwotICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwotCi0gICAgb2NjbHVzaW9uLmVudGVy
VGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3VyZmFjZSgpKTsKLQotICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAw
LCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQo
KSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRM
YXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNU
X1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXll
ci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRM
YXllci5nZXQoKSwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxT
RShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMjAwLCAx
MDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExh
eWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFj
ZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0KLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDIwMCwgNTAsIDUwLCA1MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkpOwotICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDAp
KSk7Ci0gICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDIwMCwgMTAwLCA1MCksIG9jY2x1
c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDEwMCwgMjAw
LCAxMDAsIDEwMCkpKTsKLX0KLQotVEVTVF9PUEFRVUVfQU5EX1BBSU5URURfT1BBUVVFKENDT2Nj
bHVzaW9uVHJhY2tlclRlc3RfZGFtYWdlUmVjdE92ZXJQYXJ0aWFsVGlsZXMsIGRhbWFnZVJlY3RP
dmVyUGFydGlhbFRpbGVzKTsKLQotdm9pZCBkYW1hZ2VSZWN0T3Zlck5vVGlsZXMoYm9vbCBvcGFx
dWVMYXllcnMpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNy
ZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4g
cGFyZW50TGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQoKSk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50
PiBsYXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dCgpKTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFk
ZENoaWxkKHBhcmVudExheWVyKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQotICAg
IEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBmaWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBl
bmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBwYXJlbnRMYXllci0+c2V0RmlsdGVycyhm
aWx0ZXJzKTsKLSAgICBsYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKLQotICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgZmFsc2UsIG9wYXF1ZUxheWVycyk7Ci0gICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlLCBvcGFxdWVMYXllcnMpOwotCi0g
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7
Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAg
IGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0gICAgcGFyZW50LT5yZW5kZXJTdXJm
YWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2ludDo6emVy
bygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5hcHBl
bmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15TGF5
ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIFRlc3REYW1hZ2VDbGllbnQgZGFt
YWdlKEZsb2F0UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKLSAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKLQot
ICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0KCks
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMCwg
MTAwLCAxMDApKSk7Ci0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdl
dCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLQotICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7Ci0gICAgb2NjbHVzaW9uLmxlYXZlVG9U
YXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudExheWVyLT5yZW5kZXJTdXJmYWNlKCkp
OwotCi0gICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgp
LCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5v
Y2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOwot
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50
UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7Ci0g
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudExheWVyLmdldCgpLCBJbnRS
ZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKLSAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJl
Y3QoMCwgMjAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50TGF5ZXIuZ2V0KCksIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOwotICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnRMYXllci5nZXQoKSwgSW50UmVj
dCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7Ci0KLSAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotCi0gICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwg
MCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9j
Y2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDAsIDMwMCwgMTAwKSku
aXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudC5nZXQoKSwgSW50UmVjdCgwLCAxMDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsK
LSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudC5n
ZXQoKSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOwotICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LmdldCgpLCBJbnRS
ZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7Ci19Ci0KLVRFU1RfT1BBUVVFX0FO
RF9QQUlOVEVEX09QQVFVRShDQ09jY2x1c2lvblRyYWNrZXJUZXN0X2RhbWFnZVJlY3RPdmVyTm9U
aWxlcywgZGFtYWdlUmVjdE92ZXJOb1RpbGVzKTsKLQotVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0LCBvcGFxdWVDb250ZW50c1JlZ2lvbkVtcHR5KQotewotICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwotICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJl
bnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdp
dGhGb3JjZWREcmF3c0NvbnRlbnQ+IGxheWVyID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1X
aXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwotICAgIHBhcmVudC0+Y3JlYXRlUmVuZGVyU3VyZmFj
ZSgpOwotICAgIHBhcmVudC0+YWRkQ2hpbGQobGF5ZXIpOwordGVtcGxhdGU8Y2xhc3MgVHlwZXMs
IGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdExheWVyU2Np
c3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxU
eXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQor
ICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9
IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUp
OworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDUwLCA1
MCwgMjAwLCAyMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMTAwLCAx
MDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXll
ciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKwor
ICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQs
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50
LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9j
Y2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgy
MDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJ
bnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwgNTApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgfQorfTsKIAotICAgIEZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBm
aWx0ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbjo6Y3JlYXRlKDAuNSwgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUpKTsKLSAgICBs
YXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChD
Q09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZCk7CiAK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlLCBmYWxzZSk7Cit0ZW1wbGF0ZTxj
bGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFy
ZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCkpOworICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJn
ZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50
LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2Ns
dWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVj
dCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2Nj
bHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAxMDAsIDEw
MCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAsIDEwMCwgMTAwKSkpOworICAg
ICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRl
ZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDUwLCA1MCwgNTApLCBvY2NsdXNpb24udW5vY2Ns
dWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDEwMCwgNTAsIDEwMCksIG9jY2x1c2lvbi51
bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDApKSk7
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAxMDAsIDUwLCAxMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAyMDAsIDEwMCwg
NTApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgxMDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgfQorfTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6
ZSA9IDUxMjsKK0FMTF9DQ09DQ0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlPdmVyQ2hpbGQpOwogCi0gICAgcGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFy
ZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQb2lu
dDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dC5hcHBlbmQocGFyZW50KTsKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVy
cz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0UGFydGx5T3ZlckNoaWxk
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewor
cHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKIAotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGR1bW15
TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVu
dDx0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAs
IDUwLCAyMDAsIDIwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApLCAmZGFtYWdlKTsKIAotICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOwogCi0gICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShs
YXllci0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1
MCwgNTAsIDE1MCwgMTUwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChsYXllciwg
SW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpKTsKIAotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24u
b2NjbHVkZWQobGF5ZXIuZ2V0KCksIEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllci5nZXQoKSwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOwotICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIu
Z2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAg
ICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVy
U3VyZmFjZSgpKTsKIAotICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJm
YWNlIGJvdW5kcy4KLSAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIuZ2V0
KCksIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OwogCi0gICAg
Ly8gVGVzdCB3aXRob3V0IGFueSBzY2lzc29ycy4KLSAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lz
c29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICBFWFBFQ1RfRkFMU0Uob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLmdldCgpLCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkp
KTsKLSAgICBvY2NsdXNpb24udXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKTsKK0FMTF9DQ09D
Q0xVU0lPTlRSQUNLRVJfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0RGFtYWdlUmVjdFBhcnRs
eU92ZXJDaGlsZCk7CiAKLSAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5
ZXIuZ2V0KCkpOwotICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJl
bnQtPnJlbmRlclN1cmZhY2UoKSk7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVM
YXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdE92ZXJO
b3RoaW5nIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKKyAgICAgICAgdGhpcy0+
Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFz
ZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFj
ZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgb2Nj
bHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsK
KworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChs
YXllciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5
ZXIsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRv
VGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAg
RVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNp
b24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMTAwLCAxMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAs
IDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQsIEludFJlY3QoMTAwLCAyMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEw
MCkpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpLmlzRW1wdHkoKSk7CisgICAgICAg
IEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMTAwKSkuaXNFbXB0eSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2Nj
bHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMTAwLCAzMDAs
IDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDIwMCwgMTAwLCAxMDAsIDEwMCkpLmlzRW1w
dHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3QocGFyZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAg
fQorfTsKIAotICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNl
KCkuYm91bmRzKCkuaXNFbXB0eSgpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotfQorQUxMX0NDT0NDTFVTSU9O
VFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0T3Zlck5v
dGhpbmcpOwogCi1URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3QsIG9wYXF1ZUNvbnRlbnRzUmVn
aW9uTm9uRW1wdHkpCi17Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVu
dD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRl
bnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7Ci0gICAgcGFyZW50LT5h
ZGRDaGlsZChsYXllcik7Cit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+
CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RPdmVyTm90aGlu
ZyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CisgICAgICAgIHRoaXMtPmNhbGNE
cmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgb2NjbHVz
aW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShsYXllci0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICBF
WFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1Rhcmdl
dFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVD
VF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMCwgMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJl
Y3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9j
Y2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAs
IDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1
c2lvbi5vY2NsdWRlZChwYXJlbnQsIEludFJlY3QoMjAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAyMDAs
IDEwMCwgMTAwKSkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVkZWQocGFy
ZW50LCBJbnRSZWN0KDEwMCwgMjAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
b2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7
CisKKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChw
YXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKS5pc0VtcHR5KCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgw
LCAwLCAzMDAsIDEwMCkpLmlzRW1wdHkoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMzAwLCAxMDAp
KS5pc0VtcHR5KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkp
OworICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgxMDAsIDIwMCwgMTAwLCAxMDApKS5pc0VtcHR5KCkpOworICAgIH0KK307
CiAKLSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKLSAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxv
YXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxzZSwgZmFsc2UpOworQUxM
X0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lz
c29yUmVjdE92ZXJOb3RoaW5nKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiBkdW1teUxheWVyTGlzdDsKLSAgICBpbnQgZHVtbXlNYXhUZXh0dXJlU2l6ZSA9IDUxMjsK
K3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3REYW1hZ2VSZWN0T3Zlck5vdGhpbmcgOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFy
ZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAg
cGFyZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6
Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50
UmVjdChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKKyAgICAgICAgVGVzdERhbWFnZUNsaWVudDx0
eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IGRhbWFnZShGbG9hdFJlY3QoNTAwLCA1
MDAsIDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCksICZkYW1hZ2UpOwogCi0gICAgQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
cGFyZW50LmdldCgpLCBwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJp
eCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVy
ZVNpemUpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKGxheWVy
LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0gICAgewotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QobGF5ZXIsIEludFJlY3Qo
MCwgMCwgMjAwLCAyMDApKS5pc0VtcHR5KCkpOwogCi0gICAgICAgIG9jY2x1c2lvbi5lbnRlclRh
cmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIuZ2V0KCkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICBvY2NsdXNpb24u
bGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwogCi0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9F
USgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFy
ZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkuaXNFbXB0eSgpKTsKKyAgICB9Cit9OworCitB
TExfQ0NPQ0NMVVNJT05UUkFDS0VSX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdERhbWFnZVJl
Y3RPdmVyTm90aGluZyk7CiAKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgxMDAsIDEw
MCwgMTAwLCAxMDApKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
cGFyZW50LmdldCgpLCBJbnRSZWN0KDIwMCwgMjAwLCAxMDAsIDEwMCkpKTsKK3RlbXBsYXRlPGNs
YXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRl
c3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4gOiBwdWJsaWMgQ0NPY2NsdXNpb25U
cmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBy
dW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFy
ZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDIwMCksIHRydWUpOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJm
YWNlKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIC8vIFRoaXMgbGF5ZXIgaXMg
dHJhbnNsYXRlZCB3aGVuIGRyYXduIGludG8gaXRzIHRhcmdldC4gU28gaWYgdGhlIHNjaXNzb3Ig
cmVjdCBnaXZlbiBmcm9tIHRoZSB0YXJnZXQgc3VyZmFjZQorICAgICAgICAvLyBpcyBub3QgaW4g
dGhhdCB0YXJnZXQgc3BhY2UsIHRoZW4gYWZ0ZXIgdHJhbnNsYXRpbmcgdGhlc2UgcXVlcnkgcmVj
dHMgaW50byB0aGUgdGFyZ2V0LCB0aGV5IHdpbGwgZmFsbCBvdXRzaWRlCisgICAgICAgIC8vIHRo
ZSBzY2lzc29yIGFuZCBiZSBjb25zaWRlcmVkIG9jY2x1ZGVkLgorICAgICAgICBFWFBFQ1RfRkFM
U0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAs
IDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVk
ZWQobGF5ZXIsIEludFJlY3QoMTAwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CiAgICAgfQorfTsKKworQUxMX0NDT0NDTFVTSU9OVFJBQ0tFUl9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RMYXllclNjaXNzb3JSZWN0Rm9yTGF5ZXJPZmZPcmlnaW4pOwogCit0ZW1wbGF0
ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25FbXB0eSA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15
VGVzdCgpCiAgICAgewotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgbGF5ZXItPnNldE9wYXF1ZVBhaW50
UmVjdChJbnRSZWN0KDIwLCAyMCwgMTgwLCAxODApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMo
cGFyZW50KTsKIAotICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKGxheWVyLmdldCgpKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7
CiAKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMjAsIDEyMCwgMTgwLCAxODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChsYXllciwgSW50
UmVjdCgwLCAwLCAxMDAsIDEwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5v
Y2NsdWRlZChsYXllciwgSW50UmVjdCgxMDAsIDAsIDEwMCwgMTAwKSkpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQobGF5ZXIsIElu
dFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOwogCi0gICAgICAgIEVYUEVDVF9GQUxTRShvY2Ns
dXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJbnRSZWN0KDAsIDEwMCwgMTAwLCAxMDApKSk7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LmdldCgpLCBJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVz
aW9uLm9jY2x1ZGVkKHBhcmVudC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7
CisgICAgICAgIC8vIE9jY2x1ZGVkIHNpbmNlIGl0cyBvdXRzaWRlIHRoZSBzdXJmYWNlIGJvdW5k
cy4KKyAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpKTsKKworICAgICAgICAvLyBUZXN0IHdpdGhvdXQgYW55IHNj
aXNzb3JzLgorICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRl
ZChsYXllciwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi51c2VEZWZhdWx0TGF5ZXJTY2lzc29yUmVjdCgpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQ
RUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKS5pc0Vt
cHR5KCkpOworICAgICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwogICAgIH0KK307CisKK01BSU5fQU5EX0lNUExfVEhS
RUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdE9wYXF1ZUNvbnRlbnRzUmVnaW9uRW1wdHkp
OwogCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0T3BhcXVlQ29udGVudHNSZWdpb25Ob25FbXB0eSA6IHB1YmxpYyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoK
KyAgICB2b2lkIHJ1bk15VGVzdCgpCiAgICAgewotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyIG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKLSAgICAgICAgbGF5ZXIt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KDE1MCwgMTUwLCAxMDAsIDEwMCkpOworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMjAwLCAyMDApLCBmYWxzZSk7CisgICAgICAg
IHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFy
Z2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllci5nZXQoKSk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXll
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRl
bnRzUmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgyNTAsIDI1MCwgNTAsIDUwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgICAgICBvY2NsdXNp
b24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisKKyAg
ICAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5z
aXplKCkpOworCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwg
SW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgIH0KKworICAgICAgICB7Cisg
ICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250
ZW50c1JlY3QoSW50UmVjdCgyMCwgMjAsIDE4MCwgMTgwKSk7CisKKyAgICAgICAgICAgIG9jY2x1
c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKwor
ICAgICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMjAsIDEyMCwgMTgwLCAxODApLCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CiAKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQuZ2V0KCksIEludFJlY3QoMCwgMTAwLCAxMDAsIDEwMCkpKTsKLSAgICAgICAgRVhQRUNUX0ZB
TFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJlbnQuZ2V0KCksIEludFJlY3QoMTAwLCAxMDAsIDEw
MCwgMTAwKSkpOwotICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVu
dC5nZXQoKSwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgwLCAxMDAsIDEwMCwg
MTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChwYXJl
bnQsIEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSkpOworICAgICAgICAgICAgRVhQRUNUX1RS
VUUob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAxMDAp
KSk7CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVu
ZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAg
ICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgxNTAsIDE1MCwg
MTAwLCAxMDApKTsKKworICAgICAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworCisgICAgICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDI1MCwgMjUwLCA1MCwgNTApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgICAgIEVY
UEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQocGFyZW50LCBJbnRSZWN0KDAsIDEwMCwgMTAw
LCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBh
cmVudCwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKSk7CisgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHBhcmVudCwgSW50UmVjdCgyMDAsIDIwMCwgMTAwLCAx
MDApKSk7CisgICAgICAgIH0KICAgICB9Ci19Cit9OworCitNQUlOX0FORF9JTVBMX1RIUkVBRF9U
RVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5KTsK
IAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>