<?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>67006</bug_id>
          
          <creation_ts>2011-08-25 17:54:11 -0700</creation_ts>
          <short_desc>[chromium] Add MockWebGraphicsContext3D, for compositor unit testing</short_desc>
          <delta_ts>2011-08-26 17:41:51 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>enne</cc>
    
    <cc>husky</cc>
    
    <cc>kbr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>457302</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-08-25 17:54:11 -0700</bug_when>
    <thetext>[chromium] Add MockWebGraphicsContext3D, for compositor unit testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457308</commentid>
    <comment_count>1</comment_count>
      <attachid>105288</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-08-25 18:01:39 -0700</bug_when>
    <thetext>Created attachment 105288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457323</commentid>
    <comment_count>2</comment_count>
      <attachid>105288</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-25 18:36:36 -0700</bug_when>
    <thetext>Comment on attachment 105288
Patch

I have a high level question for @kbr, though, which is whether this is the right layer to hook at. I just can&apos;t make my mind up, personally.

Clearly, its the only place we can hook right now because everything higher is non-virtual.

However, this means that all our testing becomes specific to the Chromium port.

Is this OK? I guess some of this ties back to me not understanding WebKits&apos; overal position on unit tests...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457331</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-25 19:09:32 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 105288 [details])
&gt; I have a high level question for @kbr, though, which is whether this is the right layer to hook at. I just can&apos;t make my mind up, personally.
&gt; 
&gt; Clearly, its the only place we can hook right now because everything higher is non-virtual.
&gt; 
&gt; However, this means that all our testing becomes specific to the Chromium port.
&gt; 
&gt; Is this OK? I guess some of this ties back to me not understanding WebKits&apos; overal position on unit tests...

I think this is fine for the time being. There&apos;s been discussion in recent months about settling on a unit testing framework for the overall WebKit project -- see https://lists.webkit.org/pipermail/webkit-dev/2011-April/016510.html -- but so far everyone&apos;s been too busy to push it forward. There was some consensus at the last WebKit meeting in April that the project would try to standardize on gtest, which is full featured and well maintained, so adding a gtest-compatible mock and tests sounds good even if they&apos;re currently Chromium specific. They could be made port-independent in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457333</commentid>
    <comment_count>4</comment_count>
      <attachid>105288</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-25 19:16:00 -0700</bug_when>
    <thetext>Comment on attachment 105288
Patch

This generally looks nice. Hopefully this will allow us to eventually catch some errors earlier. I am concerned though that adding new methods to WebGraphicsContext3D (which happens reasonably frequently) will cause the WebKit unit tests to break and developers won&apos;t catch that until fairly late. Do the Chromium EWS bots build and run the webkit unit tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457364</commentid>
    <comment_count>5</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-25 21:15:51 -0700</bug_when>
    <thetext>Hmm, the builders do, but I&apos;m not sure how they relate to EWS... +abarth :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457661</commentid>
    <comment_count>6</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-08-26 11:10:05 -0700</bug_when>
    <thetext>@kbr, can you do a formal review of this? I&apos;m going to pick up Iain&apos;s patch and try to land it before I land 66807.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457835</commentid>
    <comment_count>7</comment_count>
      <attachid>105288</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-26 16:19:06 -0700</bug_when>
    <thetext>Comment on attachment 105288
Patch

OK. If we find that we&apos;re breaking things frequently on the canaries we can change what gets compiled in which targets. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457873</commentid>
    <comment_count>8</comment_count>
      <attachid>105288</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 17:41:46 -0700</bug_when>
    <thetext>Comment on attachment 105288
Patch

Clearing flags on attachment: 105288

Committed r93928: &lt;http://trac.webkit.org/changeset/93928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457874</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 17:41:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105288</attachid>
            <date>2011-08-25 18:01:39 -0700</date>
            <delta_ts>2011-08-26 17:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67006-20110825180138.patch</filename>
            <type>text/plain</type>
            <size>30252</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5Mzg0NCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTc4
IEBACisyMDExLTA4LTI1ICBJYWluIE1lcnJpY2sgIDxodXNreUBnb29nbGUuY29tPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWRkIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCwgZm9yIGNvbXBvc2l0
b3IgdW5pdCB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzAwNgorCisgICAgICAgIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCBpcyBhIG5v
LW9wIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwdXJlIHZpcnR1YWwKKyAgICAgICAgaW50ZXJmYWNl
IFdlYkdyYXBoaWNzQ29udGV4dDNELiBJJ3ZlIGluY2x1ZGVkIGEgdGVzdCB3aXRoIGEgY291cGxl
IG9mCisgICAgICAgIGV4YW1wbGUgdXNhZ2VzOiBzdWJjbGFzc2luZyBpdCBtYW51YWxseSwgYW5k
IHVzaW5nIGl0IHdpdGggR01vY2suCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9Nb2NrV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dl
YkdyYXBoaWNzQ29udGV4dDNEOjp3aWR0aCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFw
aGljc0NvbnRleHQzRDo6aGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpyZXNoYXBlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29u
dGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNEOjpyZWFkQmFja0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQbGF0Zm9ybVRleHR1cmVJZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnN5bnRoZXNpemVHTEVycm9yKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjppc0NvbnRleHRMb3N0
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjptYXBCdWZmZXJT
dWJEYXRhQ0hST01JVU0pOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0
M0Q6OnVubWFwQnVmZmVyU3ViRGF0YUNIUk9NSVVNKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dl
YkdyYXBoaWNzQ29udGV4dDNEOjptYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0pOgorICAgICAgICAo
V2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVubWFwVGV4U3ViSW1hZ2UyRENIUk9N
SVVNKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZXF1
ZXN0YWJsZUV4dGVuc2lvbnNDSFJPTUlVTSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFw
aGljc0NvbnRleHQzRDo6cmVxdWVzdEV4dGVuc2lvbkNIUk9NSVVNKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpibGl0RnJhbWVidWZmZXJDSFJPTUlVTSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlQ0hST01JVU0pOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmFjdGl2ZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJH
cmFwaGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2Vw
YXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
RnVuYyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRG
dW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OmJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OmJ1ZmZlclN1YkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0
M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckNvbG9yKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckRlcHRoKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhclN0ZW5jaWwpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbG9yTWFzayk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFw
aGljc0NvbnRleHQzRDo6Y29weVRleEltYWdlMkQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZSk6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpkZXB0aE1hc2spOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmRlcHRoUmFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpNb2Nr
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tX
ZWJHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToKKyAgICAgICAg
KFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzKToKKyAgICAgICAg
KFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpkcmF3RWxlbWVudHMpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2gpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpmcmFtZWJ1
ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQz
RDo6ZnJvbnRGYWNlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNE
OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlQXR0cmliKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAgICAgICAoV2ViS2l0OjpN
b2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudik6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
cnJvcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0Rmxv
YXR2KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdik6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5m
b0xvZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hh
ZGVyU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFRleFBhcmFtZXRlcmZ2KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZz
ZXQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmhpbnQpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmVXaWR0aCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0pOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVpKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpwb2x5Z29uT2Zmc2V0
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxz
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hh
ZGVyQ29tcGlsZXIpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3ND
b250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNEOjpzY2lzc29yKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNz
Q29udGV4dDNEOjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdl
YktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyZik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVyaSk6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dGV4U3ViSW1hZ2Uy
RCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFm
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWZ2
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZik6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJmdik6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYpOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTRmKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGkpOgorICAg
ICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aXYpOgorICAg
ICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXgzZnYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm1NYXRyaXg0ZnYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OnZhbGlkYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliMWYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmdik6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdik6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9p
bnRlcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6dmlld3Bv
cnQpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYkdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2Vi
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRlcik6CisgICAg
ICAgIChXZWJLaXQ6Ok1vY2tXZWJHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZSk6Cisg
ICAgICAgICogdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgIChGcmFtZUNvdW50aW5nQ29udGV4dDo6RnJhbWVDb3Vu
dGluZ0NvbnRleHQpOgorICAgICAgICAoRnJhbWVDb3VudGluZ0NvbnRleHQ6OnByZXBhcmVUZXh0
dXJlKToKKyAgICAgICAgKEZyYW1lQ291bnRpbmdDb250ZXh0OjpmcmFtZUNvdW50KToKKwogMjAx
MS0wOC0yNSAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RW5hYmxlIGluY3JlbWVudGFsIGxpbmtpbmcgZm9yIGNvbXBvbmVudCBidWlsZCBvbiBDaHJvbWl1
bQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCShyZXZpc2lvbiA5MzcyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDYgKzYzLDggQEAKICAgICAgICAgICAgICd0ZXN0cy9Jbm5lckdlc3R1cmVSZWNvZ25pemVyVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0tVUkxUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvTW9ja1dlYkdyYXBo
aWNzQ29udGV4dDNELmgnLAorICAgICAgICAgICAgJ3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRl
eHQzRFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9QT0RBcmVuYVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9QT0RJbnRlcnZhbFRyZWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvUE9EUmVkQmxhY2tUcmVlVGVzdC5jcHAnLApJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3ND
b250ZXh0M0QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRF9oCisjZGVmaW5lIE1vY2tXZWJHcmFwaGljc0NvbnRl
eHQzRF9oCisKKyNpbmNsdWRlICJXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gV2ViR3JhcGhpY3NDb250ZXh0M0QgYmFzZSBjbGFzcyBmb3IgdXNlIGlu
IFdlYktpdCB1bml0IHRlc3RzLgorLy8gQWxsIG9wZXJhdGlvbnMgYXJlIG5vLW9wcyAocmV0dXJu
aW5nIDAgaWYgbmVjZXNzYXJ5KS4KK2NsYXNzIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCA6IHB1
YmxpYyBXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemUoQXR0cmlidXRlcywgV2ViVmlldyosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb1dlYlZp
ZXcpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgbWFrZUNvbnRleHRDdXJy
ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZp
cnR1YWwgdm9pZCByZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkgeyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNHTEVTMkNvbXBsaWFudCgpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0
dWFsIGJvb2wgcmVhZEJhY2tGcmFtZWJ1ZmZlcih1bnNpZ25lZCBjaGFyKiBwaXhlbHMsIHNpemVf
dCBidWZmZXJTaXplLCBXZWJHTElkIGZyYW1lYnVmZmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIFdlYkdMSWQgZ2V0UGxhdGZvcm1UZXh0
dXJlSWQoKSB7IHJldHVybiAwOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRleHR1cmUo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzeW50aGVzaXplR0xFcnJvcihXR0MzRGVudW0pIHsg
fQorCisgICAgdmlydHVhbCBib29sIGlzQ29udGV4dExvc3QoKSB7IHJldHVybiBmYWxzZTsgfQor
CisgICAgdmlydHVhbCB2b2lkKiBtYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0oV0dDM0RlbnVtIHRh
cmdldCwgV0dDM0RpbnRwdHIgb2Zmc2V0LCBXR0MzRHNpemVpcHRyIHNpemUsIFdHQzNEZW51bSBh
Y2Nlc3MpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5tYXBCdWZmZXJTdWJEYXRh
Q0hST01JVU0oY29uc3Qgdm9pZCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCogbWFwVGV4U3ViSW1h
Z2UyRENIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4
b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhl
aWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIFdHQzNEZW51bSBhY2Nlc3Mp
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5tYXBUZXhTdWJJbWFnZTJEQ0hST01J
VU0oY29uc3Qgdm9pZCopIHsgfQorCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFi
bGVFeHRlbnNpb25zQ0hST01JVU0oKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0RXh0ZW5zaW9uQ0hST01JVU0oY29uc3QgY2hhciopIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGJsaXRGcmFtZWJ1ZmZlckNIUk9NSVVNKFdHQzNEaW50IHNyY1gwLCBXR0Mz
RGludCBzcmNZMCwgV0dDM0RpbnQgc3JjWDEsIFdHQzNEaW50IHNyY1kxLCBXR0MzRGludCBkc3RY
MCwgV0dDM0RpbnQgZHN0WTAsIFdHQzNEaW50IGRzdFgxLCBXR0MzRGludCBkc3RZMSwgV0dDM0Ri
aXRmaWVsZCBtYXNrLCBXR0MzRGVudW0gZmlsdGVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dD
M0RzaXplaSBzYW1wbGVzLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lk
dGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVUZXh0
dXJlKFdHQzNEZW51bSB0ZXh0dXJlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hhZGVy
KFdlYkdMSWQgcHJvZ3JhbSwgV2ViR0xJZCBzaGFkZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBi
aW5kQXR0cmliTG9jYXRpb24oV2ViR0xJZCBwcm9ncmFtLCBXR0MzRHVpbnQgaW5kZXgsIGNvbnN0
IFdHQzNEY2hhciogbmFtZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGJpbmRCdWZmZXIoV0dDM0Rl
bnVtIHRhcmdldCwgV2ViR0xJZCBidWZmZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBiaW5kRnJh
bWVidWZmZXIoV0dDM0RlbnVtIHRhcmdldCwgV2ViR0xJZCBmcmFtZWJ1ZmZlcikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGJpbmRSZW5kZXJidWZmZXIoV0dDM0RlbnVtIHRhcmdldCwgV2ViR0xJZCBy
ZW5kZXJidWZmZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4dHVyZShXR0MzRGVudW0g
dGFyZ2V0LCBXZWJHTElkIHRleHR1cmUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBibGVuZENvbG9y
KFdHQzNEY2xhbXBmIHJlZCwgV0dDM0RjbGFtcGYgZ3JlZW4sIFdHQzNEY2xhbXBmIGJsdWUsIFdH
QzNEY2xhbXBmIGFscGhhKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmxlbmRFcXVhdGlvbihXR0Mz
RGVudW0gbW9kZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShX
R0MzRGVudW0gbW9kZVJHQiwgV0dDM0RlbnVtIG1vZGVBbHBoYSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGJsZW5kRnVuYyhXR0MzRGVudW0gc2ZhY3RvciwgV0dDM0RlbnVtIGRmYWN0b3IpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShXR0MzRGVudW0gc3JjUkdCLCBXR0Mz
RGVudW0gZHN0UkdCLCBXR0MzRGVudW0gc3JjQWxwaGEsIFdHQzNEZW51bSBkc3RBbHBoYSkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYnVmZmVyRGF0YShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRHNp
emVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIFdHQzNEZW51bSB1c2FnZSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnRwdHIg
b2Zmc2V0LCBXR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsgfQorCisgICAg
dmlydHVhbCBXR0MzRGVudW0gY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhXR0MzRGVudW0gdGFyZ2V0
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyKFdHQzNEYml0ZmllbGQgbWFz
aykgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ29sb3IoV0dDM0RjbGFtcGYgcmVkLCBXR0Mz
RGNsYW1wZiBncmVlbiwgV0dDM0RjbGFtcGYgYmx1ZSwgV0dDM0RjbGFtcGYgYWxwaGEpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckRlcHRoKFdHQzNEY2xhbXBmIGRlcHRoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJTdGVuY2lsKFdHQzNEaW50IHMpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb2xvck1hc2soV0dDM0Rib29sZWFuIHJlZCwgV0dDM0Rib29sZWFuIGdyZWVuLCBXR0MzRGJv
b2xlYW4gYmx1ZSwgV0dDM0Rib29sZWFuIGFscGhhKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29t
cGlsZVNoYWRlcihXZWJHTElkIHNoYWRlcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eEltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRl
cm5hbGZvcm1hdCwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dD
M0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNv
cHlUZXhTdWJJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGlu
dCB4b2Zmc2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0Mz
RHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGN1
bGxGYWNlKFdHQzNEZW51bSBtb2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVwdGhGdW5jKFdH
QzNEZW51bSBmdW5jKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVwdGhNYXNrKFdHQzNEYm9vbGVh
biBmbGFnKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVwdGhSYW5nZShXR0MzRGNsYW1wZiB6TmVh
ciwgV0dDM0RjbGFtcGYgekZhcikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaFNoYWRlcihX
ZWJHTElkIHByb2dyYW0sIFdlYkdMSWQgc2hhZGVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZShXR0MzRGVudW0gY2FwKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KFdHQzNEdWludCBpbmRleCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRyYXdBcnJh
eXMoV0dDM0RlbnVtIG1vZGUsIFdHQzNEaW50IGZpcnN0LCBXR0MzRHNpemVpIGNvdW50KSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd0VsZW1lbnRzKFdHQzNEZW51bSBtb2RlLCBXR0MzRHNpemVp
IGNvdW50LCBXR0MzRGVudW0gdHlwZSwgV0dDM0RpbnRwdHIgb2Zmc2V0KSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoV0dDM0RlbnVtIGNhcCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KFdHQzNEdWludCBpbmRleCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGZpbmlzaCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVu
dW0gYXR0YWNobWVudCwgV0dDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xJZCByZW5k
ZXJidWZmZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChXR0Mz
RGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gYXR0YWNobWVudCwgV0dDM0RlbnVtIHRleHRhcmdldCwg
V2ViR0xJZCB0ZXh0dXJlLCBXR0MzRGludCBsZXZlbCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGZy
b250RmFjZShXR0MzRGVudW0gbW9kZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlTWlw
bWFwKFdHQzNEZW51bSB0YXJnZXQpIHsgfQorCisgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZUF0
dHJpYihXZWJHTElkIHByb2dyYW0sIFdHQzNEdWludCBpbmRleCwgQWN0aXZlSW5mbyYpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldEFjdGl2ZVVuaWZvcm0oV2ViR0xJZCBw
cm9ncmFtLCBXR0MzRHVpbnQgaW5kZXgsIEFjdGl2ZUluZm8mKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xJZCBwcm9ncmFtLCBXR0Mz
RHNpemVpIG1heENvdW50LCBXR0MzRHNpemVpKiBjb3VudCwgV2ViR0xJZCogc2hhZGVycykgeyB9
CisgICAgdmlydHVhbCBXR0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTElkIHByb2dyYW0s
IGNvbnN0IFdHQzNEY2hhciogbmFtZSkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBn
ZXRCb29sZWFudihXR0MzRGVudW0gcG5hbWUsIFdHQzNEYm9vbGVhbiogdmFsdWUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihXR0MzRGVudW0gdGFyZ2V0LCBXR0Mz
RGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCBBdHRyaWJ1dGVz
IGdldENvbnRleHRBdHRyaWJ1dGVzKCkgeyByZXR1cm4gQXR0cmlidXRlcygpOyB9CisgICAgdmly
dHVhbCBXR0MzRGVudW0gZ2V0RXJyb3IoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lk
IGdldEZsb2F0dihXR0MzRGVudW0gcG5hbWUsIFdHQzNEZmxvYXQqIHZhbHVlKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoV0dDM0RlbnVt
IHRhcmdldCwgV0dDM0RlbnVtIGF0dGFjaG1lbnQsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RpbnQq
IHZhbHVlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW50ZWdlcnYoV0dDM0RlbnVtIHBuYW1l
LCBXR0MzRGludCogdmFsdWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9ncmFtaXYoV2Vi
R0xJZCBwcm9ncmFtLCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgeyB9CisgICAg
dmlydHVhbCBXZWJTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xJZCBwcm9ncmFtKSB7IHJl
dHVybiBXZWJTdHJpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdihXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1
ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFNoYWRlcml2KFdlYkdMSWQgc2hhZGVyLCBXR0Mz
RGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCBXZWJTdHJpbmcg
Z2V0U2hhZGVySW5mb0xvZyhXZWJHTElkIHNoYWRlcikgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0K
KworICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTElkIHNoYWRlcikg
eyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRTdHJpbmco
V0dDM0RlbnVtIG5hbWUpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CisgICAgdmlydHVhbCB2b2lk
IGdldFRleFBhcmFtZXRlcmZ2KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwgV0dD
M0RmbG9hdCogdmFsdWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRUZXhQYXJhbWV0ZXJpdihX
R0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gcG5hbWUsIFdHQzNEaW50KiB2YWx1ZSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1mdihXZWJHTElkIHByb2dyYW0sIFdHQzNEaW50IGxv
Y2F0aW9uLCBXR0MzRGZsb2F0KiB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFVuaWZv
cm1pdihXZWJHTElkIHByb2dyYW0sIFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGludCogdmFsdWUp
IHsgfQorICAgIHZpcnR1YWwgV0dDM0RpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMSWQgcHJv
Z3JhbSwgY29uc3QgV0dDM0RjaGFyKiBuYW1lKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2
b2lkIGdldFZlcnRleEF0dHJpYmZ2KFdHQzNEdWludCBpbmRleCwgV0dDM0RlbnVtIHBuYW1lLCBX
R0MzRGZsb2F0KiB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdldFZlcnRleEF0dHJpYml2
KFdHQzNEdWludCBpbmRleCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogdmFsdWUpIHsgfQor
ICAgIHZpcnR1YWwgV0dDM0RzaXplaXB0ciBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoV0dDM0R1aW50
IGluZGV4LCBXR0MzRGVudW0gcG5hbWUpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBoaW50KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBtb2RlKSB7IH0KKyAgICB2aXJ0dWFs
IFdHQzNEYm9vbGVhbiBpc0J1ZmZlcihXZWJHTElkIGJ1ZmZlcikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc0VuYWJsZWQoV0dDM0RlbnVtIGNhcCkgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKFdlYkdM
SWQgZnJhbWVidWZmZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXR0MzRGJvb2xl
YW4gaXNQcm9ncmFtKFdlYkdMSWQgcHJvZ3JhbSkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIFdHQzNEYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihXZWJHTElkIHJlbmRlcmJ1ZmZlcikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc1NoYWRlcihXZWJHTElk
IHNoYWRlcikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc1Rl
eHR1cmUoV2ViR0xJZCB0ZXh0dXJlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBsaW5lV2lkdGgoV0dDM0RmbG9hdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxpbmtQcm9ncmFt
KFdlYkdMSWQgcHJvZ3JhbSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBpeGVsU3RvcmVpKFdHQzNE
ZW51bSBwbmFtZSwgV0dDM0RpbnQgcGFyYW0pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwb2x5Z29u
T2Zmc2V0KFdHQzNEZmxvYXQgZmFjdG9yLCBXR0MzRGZsb2F0IHVuaXRzKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCByZWFkUGl4ZWxzKFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkg
d2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlw
ZSwgdm9pZCogcGl4ZWxzKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlU2hhZGVyQ29t
cGlsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKFdHQzNE
ZW51bSB0YXJnZXQsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dDM0RzaXplaSB3aWR0aCwg
V0dDM0RzaXplaSBoZWlnaHQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzYW1wbGVDb3ZlcmFnZShX
R0MzRGNsYW1wZiB2YWx1ZSwgV0dDM0Rib29sZWFuIGludmVydCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNjaXNzb3IoV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0RzaXplaSB3aWR0aCwgV0dD
M0RzaXplaSBoZWlnaHQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xJ
ZCBzaGFkZXIsIGNvbnN0IFdHQzNEY2hhciogc3RyaW5nKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c3RlbmNpbEZ1bmMoV0dDM0RlbnVtIGZ1bmMsIFdHQzNEaW50IHJlZiwgV0dDM0R1aW50IG1hc2sp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRnVuY1NlcGFyYXRlKFdHQzNEZW51bSBmYWNl
LCBXR0MzRGVudW0gZnVuYywgV0dDM0RpbnQgcmVmLCBXR0MzRHVpbnQgbWFzaykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHN0ZW5jaWxNYXNrKFdHQzNEdWludCBtYXNrKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc3RlbmNpbE1hc2tTZXBhcmF0ZShXR0MzRGVudW0gZmFjZSwgV0dDM0R1aW50IG1hc2sp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsT3AoV0dDM0RlbnVtIGZhaWwsIFdHQzNEZW51
bSB6ZmFpbCwgV0dDM0RlbnVtIHpwYXNzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbE9w
U2VwYXJhdGUoV0dDM0RlbnVtIGZhY2UsIFdHQzNEZW51bSBmYWlsLCBXR0MzRGVudW0gemZhaWws
IFdHQzNEZW51bSB6cGFzcykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4SW1hZ2UyRChXR0Mz
RGVudW0gdGFyZ2V0LCBXR0MzRGludCBsZXZlbCwgV0dDM0RlbnVtIGludGVybmFsZm9ybWF0LCBX
R0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdodCwgV0dDM0RpbnQgYm9yZGVyLCBXR0Mz
RGVudW0gZm9ybWF0LCBXR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSB7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXhQYXJhbWV0ZXJmKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51
bSBwbmFtZSwgV0dDM0RmbG9hdCBwYXJhbSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRleFBhcmFt
ZXRlcmkoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCBwYXJhbSkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChXR0MzRGVudW0gdGFyZ2V0LCBX
R0MzRGludCBsZXZlbCwgV0dDM0RpbnQgeG9mZnNldCwgV0dDM0RpbnQgeW9mZnNldCwgV0dDM0Rz
aXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEZW51bSBmb3JtYXQsIFdHQzNEZW51
bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHVuaWZv
cm0xZihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RmbG9hdCB4KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTFmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgY29uc3Qg
V0dDM0RmbG9hdCogdikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaShXR0MzRGludCBs
b2NhdGlvbiwgV0dDM0RpbnQgeCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0xaXYoV0dD
M0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEaW50KiB2KSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmKFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGZsb2F0
IHgsIFdHQzNEZmxvYXQgeSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yZnYoV0dDM0Rp
bnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEZmxvYXQqIHYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMmkoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEaW50IHgs
IFdHQzNEaW50IHkpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2KFdHQzNEaW50IGxv
Y2F0aW9uLCBXR0MzRHNpemVpIGNvdW50LCBjb25zdCBXR0MzRGludCogdikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHVuaWZvcm0zZihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RmbG9hdCB4LCBXR0Mz
RGZsb2F0IHksIFdHQzNEZmxvYXQgeikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm0zZnYo
V0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEZmxvYXQqIHYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2koV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNE
aW50IHgsIFdHQzNEaW50IHksIFdHQzNEaW50IHopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bmlm
b3JtM2l2KFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRHNpemVpIGNvdW50LCBjb25zdCBXR0MzRGlu
dCogdikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00ZihXR0MzRGludCBsb2NhdGlvbiwg
V0dDM0RmbG9hdCB4LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQgeiwgV0dDM0RmbG9hdCB3KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0Rz
aXplaSBjb3VudCwgY29uc3QgV0dDM0RmbG9hdCogdikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVu
aWZvcm00aShXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RpbnQgeCwgV0dDM0RpbnQgeSwgV0dDM0Rp
bnQgeiwgV0dDM0RpbnQgdykgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm00aXYoV0dDM0Rp
bnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIGNvbnN0IFdHQzNEaW50KiB2KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0Rz
aXplaSBjb3VudCwgV0dDM0Rib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgV0dDM0RmbG9hdCogdmFs
dWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtTWF0cml4M2Z2KFdHQzNEaW50IGxvY2F0
aW9uLCBXR0MzRHNpemVpIGNvdW50LCBXR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBXR0Mz
RGZsb2F0KiB2YWx1ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuaWZvcm1NYXRyaXg0ZnYoV0dD
M0RpbnQgbG9jYXRpb24sIFdHQzNEc2l6ZWkgY291bnQsIFdHQzNEYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCB1c2VQcm9n
cmFtKFdlYkdMSWQgcHJvZ3JhbSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZhbGlkYXRlUHJvZ3Jh
bShXZWJHTElkIHByb2dyYW0pIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjFm
KFdHQzNEdWludCBpbmRleCwgV0dDM0RmbG9hdCB4KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmVy
dGV4QXR0cmliMWZ2KFdHQzNEdWludCBpbmRleCwgY29uc3QgV0dDM0RmbG9hdCogdmFsdWVzKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmYoV0dDM0R1aW50IGluZGV4LCBXR0Mz
RGZsb2F0IHgsIFdHQzNEZmxvYXQgeSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJp
YjJmdihXR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlcykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNmKFdHQzNEdWludCBpbmRleCwgV0dDM0RmbG9hdCB4
LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQgeikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZlcnRl
eEF0dHJpYjNmdihXR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFdHQzNEZmxvYXQqIHZhbHVlcykgeyB9
CisgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjRmKFdHQzNEdWludCBpbmRleCwgV0dDM0Rm
bG9hdCB4LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQgeiwgV0dDM0RmbG9hdCB3KSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliNGZ2KFdHQzNEdWludCBpbmRleCwgY29uc3QgV0dD
M0RmbG9hdCogdmFsdWVzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliUG9pbnRl
cihXR0MzRHVpbnQgaW5kZXgsIFdHQzNEaW50IHNpemUsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGJv
b2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
R0MzRHNpemVpIHN0cmlkZSwgV0dDM0RpbnRwdHIgb2Zmc2V0KSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCB2aWV3cG9ydChXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBX
R0MzRHNpemVpIGhlaWdodCkgeyB9CisKKyAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlQnVmZmVy
KCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVGcmFtZWJ1ZmZlcigp
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUHJvZ3JhbSgpIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkdMSWQgY3JlYXRlUmVuZGVyYnVmZmVyKCkgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVTaGFkZXIoV0dDM0RlbnVtKSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZVRleHR1cmUoKSB7IHJldHVybiAw
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQnVmZmVyKFdlYkdMSWQpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcihXZWJHTElkKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlUHJvZ3JhbShXZWJHTElkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUmVu
ZGVyYnVmZmVyKFdlYkdMSWQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZWxldGVTaGFkZXIoV2Vi
R0xJZCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUoV2ViR0xJZCkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIE1vY2tXZWJHcmFwaGljc0Nv
bnRleHQzRF9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dl
YkdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9Nb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja1dlYkdyYXBoaWNzQ29udGV4
dDNEVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCisK
KyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgdGVzdGluZzsKKworVEVTVChN
b2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBCYXNpY01vY2tEb2VzTm90aGluZykKK3sKKyAg
ICBNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QgY29udGV4dDsKKyAgICBFWFBFQ1RfRkFMU0UoY29u
dGV4dC5tYWtlQ29udGV4dEN1cnJlbnQoKSk7Cit9CisKK2NsYXNzIEZyYW1lQ291bnRpbmdDb250
ZXh0IDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgRnJh
bWVDb3VudGluZ0NvbnRleHQoKSA6IG1fZnJhbWUoMCkgeyB9CisKKyAgICAvLyBUaGlzIG1ldGhv
ZCB3b3VsZCBub3JtYWxseSBkbyBhIGdsU3dhcEJ1ZmZlcnMgdW5kZXIgdGhlIGhvb2QuCisgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVUZXh0dXJlKCkgeyBtX2ZyYW1lKys7IH0KKworICAgIGludCBm
cmFtZUNvdW50KCkgeyByZXR1cm4gbV9mcmFtZTsgfQorCitwcml2YXRlOgorICAgIGludCBtX2Zy
YW1lOworfTsKKworVEVTVChNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDYW5PdmVycmlk
ZU1hbnVhbGx5KQoreworICAgIEZyYW1lQ291bnRpbmdDb250ZXh0IGNvbnRleHQ7CisKKyAgICBj
b250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7
IGkrKykgeworICAgICAgICBjb250ZXh0LmNsZWFyQ29sb3IoMCwgMCwgMCwgMSk7CisgICAgICAg
IGNvbnRleHQucHJlcGFyZVRleHR1cmUoKTsKKyAgICB9CisgICAgY29udGV4dC5maW5pc2goKTsK
KworICAgIEVYUEVDVF9FUSgxMCwgY29udGV4dC5mcmFtZUNvdW50KCkpOworfQorCitjbGFzcyBH
TW9ja0NvbnRleHQgOiBwdWJsaWMgTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoK
KyAgICBNT0NLX01FVEhPRDAod2lkdGgsIGludCgpKTsKKyAgICBNT0NLX01FVEhPRDAoaGVpZ2h0
LCBpbnQoKSk7CisgICAgTU9DS19NRVRIT0QxKHN5bnRoZXNpemVHTEVycm9yLCB2b2lkKFdHQzNE
ZW51bSBlcnJvcikpOworICAgIE1PQ0tfTUVUSE9EMChnZXRFcnJvciwgV0dDM0RlbnVtKCkpOwor
fTsKKworVEVTVChNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0RUZXN0LCBDYW5Vc2VHTW9jaykKK3sK
KyAgICBHTW9ja0NvbnRleHQgY29udGV4dDsKKworICAgIEVYUEVDVF9DQUxMKGNvbnRleHQsIHdp
ZHRoKCkpCisgICAgICAgIC5XaWxsUmVwZWF0ZWRseShSZXR1cm4oNTEyKSk7CisKKyAgICBFWFBF
Q1RfQ0FMTChjb250ZXh0LCBoZWlnaHQoKSkKKyAgICAgICAgLldpbGxSZXBlYXRlZGx5KFJldHVy
bigzODQpKTsKKworICAgIEVYUEVDVF9DQUxMKGNvbnRleHQsIHN5bnRoZXNpemVHTEVycm9yKF8p
KSAvLyBBbnkgcGFyYW1ldGVyIGFjY2VwdGVkCisgICAgICAgIC5UaW1lcyhFeGFjdGx5KDEwKSk7
CisKKyAgICAvLyBObyBleHBlY3RhdGlvbiBmb3IgZ2V0RXJyb3IoKSwgc28gY2FsbGluZyB0aGF0
IHdvdWxkIG1ha2Ugb3VyIHRlc3QgZmFpbC4KKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7
IGkrKykgeworICAgICAgICBjb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKGkpOworICAgICAgICBF
WFBFQ1RfRVEoNTEyLCBjb250ZXh0LndpZHRoKCkpOworICAgICAgICBFWFBFQ1RfRVEoMzg0LCBj
b250ZXh0LmhlaWdodCgpKTsKKworICAgICAgICAvLyBJdCdzIE9LIHRvIGNhbGwgbWV0aG9kcyBH
TW9jayBkb2Vzbid0IGtub3cgYWJvdXQuCisgICAgICAgIEVYUEVDVF9GQUxTRShjb250ZXh0Lm1h
a2VDb250ZXh0Q3VycmVudCgpKTsKKyAgICB9Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tXZWJHcmFwaGljc0NvbnRleHQzRFRlc3QuY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
      

    </bug>

</bugzilla>