<?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>59029</bug_id>
          
          <creation_ts>2011-04-20 15:41:13 -0700</creation_ts>
          <short_desc>Reduce size of GraphicsContext3D&apos;s compiled code</short_desc>
          <delta_ts>2011-08-02 08:54:02 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>59076</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>bjacob</cc>
    
    <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>satish</cc>
    
    <cc>senorblanco</cc>
    
    <cc>thakis</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389577</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-20 15:41:13 -0700</bug_when>
    <thetext>GraphicsContext3D necessarily contains comprehensive image format conversion code in order to support all of the conversions that might be needed during texture uploading. Currently each format conversion is expressed as a function handling a single pixel, and these functions are passed as template parameters so they can be inlined. Unfortunately, this is causing excessive code bloat. In http://crbug.com/78976 thakis suggests making the conversion functions do their work line-by-line and passing them as function pointers instead of template parameters to reduce the code size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389585</commentid>
    <comment_count>1</comment_count>
      <attachid>90430</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-20 15:51:11 -0700</bug_when>
    <thetext>Created attachment 90430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389590</commentid>
    <comment_count>2</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-04-20 16:06:19 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389644</commentid>
    <comment_count>3</comment_count>
      <attachid>90430</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-20 16:53:48 -0700</bug_when>
    <thetext>Comment on attachment 90430
Patch

Nifty.  What&apos;s the before/after size of GraphicsContext3D.o ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389646</commentid>
    <comment_count>4</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-04-20 16:57:25 -0700</bug_when>
    <thetext>jamesr: See ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389676</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-20 17:28:29 -0700</bug_when>
    <thetext>Committed r84441: &lt;http://trac.webkit.org/changeset/84441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389677</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-04-20 17:29:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; jamesr: See ChangeLog

Oh. I can reads good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390142</commentid>
    <comment_count>7</comment_count>
      <attachid>90430</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-04-21 10:41:46 -0700</bug_when>
    <thetext>Comment on attachment 90430
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext3D.cpp:373
&gt; +        destination[3] = convertColor16LittleTo8(source[3]);

Not really related to this work, but if performance is a consideration, doing these conversions an int at a time (or least, using an int pointer for the destination doing a single store) is often much faster than doing char-by-char.  SSE2+ would even better would be even better (but more work).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>390155</commentid>
    <comment_count>8</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-04-21 10:51:35 -0700</bug_when>
    <thetext>On the chrome bug I suggested jitting up the right conversion function, which is probably best wrt performance. But if anything needs to be color converted on the cpu on every frame, things won&apos;t be very fast anyhow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445297</commentid>
    <comment_count>9</comment_count>
    <who name="Benoit Jacob">bjacob</who>
    <bug_when>2011-08-02 08:54:02 -0700</bug_when>
    <thetext>Possibly related:
http://code.google.com/p/chromium/issues/detail?id=91208#c7

As I explain there, I disagree with unstripped object file size as a metric for code bloat. Here, using `nm` tells me that the code generated by these templates is just 25k.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90430</attachid>
            <date>2011-04-20 15:51:11 -0700</date>
            <delta_ts>2011-04-21 10:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-59029-20110420155108.patch</filename>
            <type>text/plain</type>
            <size>99219</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NDI2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDQtMjAgIEtlbm5ldGgg
UnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZHVjZSBzaXplIG9mIEdyYXBoaWNzQ29udGV4dDNEJ3MgY29t
cGlsZWQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTkwMjkKKworICAgICAgICBDaGFuZ2VkIGZvcm1hdCBjb252ZXJzaW9uIG9wZXJhdGlvbnMg
dG8gd29yayBsaW5lLWJ5LWxpbmUgaW5zdGVhZAorICAgICAgICBvZiBwaXhlbC1ieS1waXhlbCwg
YW5kIHBhc3NlZCB0aGVtIGFzIGZ1bmN0aW9uIHBvaW50ZXJzIHJhdGhlcgorICAgICAgICB0aGFu
IHRlbXBsYXRlIHBhcmFtZXRlcnMuIFNpbXBsaWZpZWQgY29tcHV0YXRpb24gb2Ygc291cmNlCisg
ICAgICAgIGluY3JlbWVudCwgc2luY2UgZWxlbWVudHMgcGVyIHJvdyBpcyBub3cgYWxsIHRoYXQg
aXMgbmVlZGVkLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgcmVkdWNlIHRoZSBzaXplIG9mIEdy
YXBoaWNzQ29udGV4dDNELm8gaW4gcmVsZWFzZQorICAgICAgICBtb2RlIG9uIExpbnV4IGZyb20g
Mjk5IEtCIHRvIDUzIEtCLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRXhpc3RpbmcgbGF5b3V0
IHRlc3RzIGNvdmVyIHRoZXNlIGZvcm1hdCBjb252ZXJzaW9ucworICAgICAgICB3ZWxsLCBhbmQg
Y2F1Z2h0IG9uZSB0eXBvIGluIHRoZSByZXN0cnVjdHVyaW5nLiBBbHNvIHJhbiBXZWJHTAorICAg
ICAgICBjb25mb3JtYW5jZSBzdWl0ZSBhbmQgb3RoZXIgZGVtb3MuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
b1VucGFja2luZ0FuZFBhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNvdXJjZUVs
ZW1lbnRzUGVyUm93KToKKyAgICAgICAgKFdlYkNvcmU6OmRvUGFja2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKToKKwogMjAxMS0wNC0yMCAgQ2hhcmxpZSBMZWUgIDxj
aG9jb2JvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaXJrIFNjaHVsemUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA4NDI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQyLDU1NSArMzQyLDgwOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbGlwVmVydGljYWxs
eSh2CiAgICAgZGVsZXRlW10gdGVtcFJvdzsKIH0KIAotLy8gVGhlc2UgZnVuY3Rpb25zIGNhbiBu
b3QgYmUgc3RhdGljLCBvciBnY2Mgd2lsbCBub3QgYWxsb3cgdGhlbSB0byBiZQotLy8gdXNlZCBh
cyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLiBVc2UgYW4gYW5vbnltb3VzIG5hbWVzcGFjZSB0byBwcmV2
ZW50Ci0vLyB0aGUgbmVlZCB0byBkZWNsYXJlIHByb3RvdHlwZXMgZm9yIHRoZW0uCisvLyBUaGUg
Zm9sbG93aW5nIHBhY2tpbmcgYW5kIHVucGFja2luZyByb3V0aW5lcyBhcmUgZXhwcmVzc2VkIGlu
IHRlcm1zCisvLyBvZiBsaW5lLWJ5LWxpbmUgb3BlcmF0aW9ucywgYW5kIHBhc3NlZCBieSBmdW5j
dGlvbiBwb2ludGVyIHJhdGhlcgorLy8gdGhhbiB0ZW1wbGF0ZSBwYXJhbWV0ZXIsIHRvIGFjaGll
dmUgdGhlIG1ham9yaXR5IG9mIHRoZSBzcGVlZHVwcyBvZgorLy8gaGF2aW5nIHRoZW0gaW5saW5l
ZCB3aGlsZSByZWR1Y2luZyBjb2RlIHNpemUuCisKIG5hbWVzcGFjZSB7CiAKIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogLy8gUGl4ZWwgdW5wYWNraW5nIHJvdXRpbmVzLgogCi12b2lkIHVucGFja1JHQkE4VG9S
R0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCB1
bnBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAg
IGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOwotICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNl
WzNdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0
aW9uWzFdID0gc291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBhY2tSR0JB
MTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2
X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJS
b3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3Vy
Y2VbMF0pOwotICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291
cmNlWzFdKTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNv
dXJjZVsyXSk7Ci0gICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChz
b3VyY2VbM10pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0
dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9y
MTZMaXR0bGVUbzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0
Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbM10pOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAg
ICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQgdW5wYWNrUkdCQTE2QmlnVG9S
R0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQg
dW5wYWNrT25lUm93T2ZSR0JBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKLSAgICBkZXN0
aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7Ci0gICAgZGVzdGlu
YXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMl0pOwotICAgIGRlc3RpbmF0
aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzNdKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMV0pOworICAgICAgICBkZXN0
aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsyXSk7CisgICAgICAgIGRl
c3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzNdKTsKKyAgICAgICAg
c291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lk
IHVucGFja1JHQjhUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24pCit2b2lkIHVucGFja09uZVJvd09mUkdCOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsK
LSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IHNv
dXJjZVsxXTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKLSAgICBkZXN0aW5hdGlv
blszXSA9IDB4RkY7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlWzJdOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7CisgICAgICAgIHNvdXJjZSAr
PSAzOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBhY2tS
R0IxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGlu
YXRpb24pCit2b2lkIHVucGFja09uZVJvd09mUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQx
Nl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291
cmNlWzBdKTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNv
dXJjZVsxXSk7Ci0gICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChz
b3VyY2VbMl0pOwotICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9u
WzBdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGlu
YXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsyXSk7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICAgICAgc291cmNlICs9IDM7CisgICAgICAg
IGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVucGFja1JHQjE2QmlnVG9SR0JB
OChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQgdW5w
YWNrT25lUm93T2ZSR0IxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGlu
YXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOwotICAgIGRlc3RpbmF0
aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKLSAgICBkZXN0aW5hdGlv
blsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsyXSk7Ci0gICAgZGVzdGluYXRpb25b
M10gPSAweEZGOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdU
bzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAweEZGOworICAgICAgICBz
b3VyY2UgKz0gMzsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQg
dW5wYWNrQkdSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbikKK3ZvaWQgdW5wYWNrT25lUm93T2ZCR1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewot
ICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291
cmNlWzFdOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9u
WzNdID0gMHhGRjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJv
dzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzJdOworICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3Vy
Y2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICAgICAgc291cmNlICs9
IDM7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVucGFja0FS
R0I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQor
dm9pZCB1bnBhY2tPbmVSb3dPZkFSR0I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzFdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzJd
OwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzNdOwotICAgIGRlc3RpbmF0aW9uWzNdID0g
c291cmNlWzBdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMV07CisgICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gc291cmNlWzJdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJj
ZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07CisgICAgICAgIHNvdXJj
ZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBh
Y2tBUkdCMTZMaXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZkFSR0IxNkxpdHRsZVRvUkdCQTgoY29uc3Qg
dWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMV0pOwotICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVU
bzgoc291cmNlWzJdKTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxl
VG84KHNvdXJjZVszXSk7Ci0gICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkxpdHRs
ZVRvOChzb3VyY2VbMF0pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxp
dHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xv
cjE2TGl0dGxlVG84KHNvdXJjZVsyXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVy
dENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzNdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBj
b252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQgdW5wYWNrQVJHQjE2
QmlnVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikK
K3ZvaWQgdW5wYWNrT25lUm93T2ZBUkdCMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3Vy
Y2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewot
ICAgIGRlc3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKLSAg
ICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsyXSk7Ci0gICAg
ZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbM10pOwotICAgIGRl
c3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRl
c3RpbmF0aW9uWzBdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMl0pOworICAgICAg
ICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVszXSk7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKKyAg
ICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQog
Ci12b2lkIHVucGFja0FCR1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3Qq
IGRlc3RpbmF0aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZkFCR1I4VG9SR0JBOChjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzNdOwotICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzJdOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzFdOwotICAgIGRl
c3RpbmF0aW9uWzNdID0gc291cmNlWzBdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2Vb
M107CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzJdOworICAgICAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07
CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0K
IH0KIAotdm9pZCB1bnBhY2tCR1JBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQgdW5wYWNrT25lUm93T2ZCR1JBOFRvUkdCQTgoY29uc3Qg
dWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKIHsKLSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsyXTsKLSAgICBkZXN0aW5h
dGlvblsxXSA9IHNvdXJjZVsxXTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKLSAg
ICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291
cmNlWzJdOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVz
dGluYXRpb25bMl0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNl
WzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAg
ICB9CiB9CiAKLXZvaWQgdW5wYWNrQkdSQTE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCog
c291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQgdW5wYWNrT25lUm93T2ZCR1JBMTZM
aXR0bGVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gY29u
dmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IGNv
bnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7Ci0gICAgZGVzdGluYXRpb25bMl0gPSBj
b252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwotICAgIGRlc3RpbmF0aW9uWzNdID0g
Y29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzNdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzJdKTsKKyAgICAgICAgZGVzdGluYXRp
b25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBkZXN0
aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAg
IGRlc3RpbmF0aW9uWzNdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzNdKTsKKyAg
ICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQog
Ci12b2lkIHVucGFja0JHUkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWlu
dDhfdCogZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09mQkdSQTE2QmlnVG9SR0JBOChj
b25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKLSAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2Qmln
VG84KHNvdXJjZVsyXSk7Ci0gICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkJpZ1Rv
OChzb3VyY2VbMV0pOwotICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdUbzgo
c291cmNlWzBdKTsKLSAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNv
dXJjZVszXSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNv
dXJjZVsyXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgo
c291cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkJpZ1Rv
OChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2Qmln
VG84KHNvdXJjZVszXSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlv
biArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBhY2tSR0JBNTU1MVRvUkdCQTgoY29uc3QgdWlu
dDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09m
UkdCQTU1NTFUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIHVpbnQxNl90IHBhY2tlZFZh
bHVlID0gc291cmNlWzBdOwotICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZhbHVlID4+IDExOwotICAg
IHVpbnQ4X3QgZyA9IChwYWNrZWRWYWx1ZSA+PiA2KSAmIDB4MUY7Ci0gICAgdWludDhfdCBiID0g
KHBhY2tlZFZhbHVlID4+IDEpICYgMHgxRjsKLSAgICBkZXN0aW5hdGlvblswXSA9IChyIDw8IDMp
IHwgKHIgJiAweDcpOwotICAgIGRlc3RpbmF0aW9uWzFdID0gKGcgPDwgMykgfCAoZyAmIDB4Nyk7
Ci0gICAgZGVzdGluYXRpb25bMl0gPSAoYiA8PCAzKSB8IChiICYgMHg3KTsKLSAgICBkZXN0aW5h
dGlvblszXSA9IChwYWNrZWRWYWx1ZSAmIDB4MSkgPyAweEZGIDogMHgwOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgdWludDE2
X3QgcGFja2VkVmFsdWUgPSBzb3VyY2VbMF07CisgICAgICAgIHVpbnQ4X3QgciA9IHBhY2tlZFZh
bHVlID4+IDExOworICAgICAgICB1aW50OF90IGcgPSAocGFja2VkVmFsdWUgPj4gNikgJiAweDFG
OworICAgICAgICB1aW50OF90IGIgPSAocGFja2VkVmFsdWUgPj4gMSkgJiAweDFGOworICAgICAg
ICBkZXN0aW5hdGlvblswXSA9IChyIDw8IDMpIHwgKHIgJiAweDcpOworICAgICAgICBkZXN0aW5h
dGlvblsxXSA9IChnIDw8IDMpIHwgKGcgJiAweDcpOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9
IChiIDw8IDMpIHwgKGIgJiAweDcpOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IChwYWNrZWRW
YWx1ZSAmIDB4MSkgPyAweEZGIDogMHgwOworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAg
ZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQgdW5wYWNrUkdCQTQ0NDRUb1JHQkE4
KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCB1bnBh
Y2tPbmVSb3dPZlJHQkE0NDQ0VG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90
KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICB1aW50MTZf
dCBwYWNrZWRWYWx1ZSA9IHNvdXJjZVswXTsKLSAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+
PiAxMjsKLSAgICB1aW50OF90IGcgPSAocGFja2VkVmFsdWUgPj4gOCkgJiAweDBGOwotICAgIHVp
bnQ4X3QgYiA9IChwYWNrZWRWYWx1ZSA+PiA0KSAmIDB4MEY7Ci0gICAgdWludDhfdCBhID0gcGFj
a2VkVmFsdWUgJiAweDBGOwotICAgIGRlc3RpbmF0aW9uWzBdID0gciA8PCA0IHwgcjsKLSAgICBk
ZXN0aW5hdGlvblsxXSA9IGcgPDwgNCB8IGc7Ci0gICAgZGVzdGluYXRpb25bMl0gPSBiIDw8IDQg
fCBiOwotICAgIGRlc3RpbmF0aW9uWzNdID0gYSA8PCA0IHwgYTsKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIHVpbnQxNl90IHBh
Y2tlZFZhbHVlID0gc291cmNlWzBdOworICAgICAgICB1aW50OF90IHIgPSBwYWNrZWRWYWx1ZSA+
PiAxMjsKKyAgICAgICAgdWludDhfdCBnID0gKHBhY2tlZFZhbHVlID4+IDgpICYgMHgwRjsKKyAg
ICAgICAgdWludDhfdCBiID0gKHBhY2tlZFZhbHVlID4+IDQpICYgMHgwRjsKKyAgICAgICAgdWlu
dDhfdCBhID0gcGFja2VkVmFsdWUgJiAweDBGOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHIg
PDwgNCB8IHI7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gZyA8PCA0IHwgZzsKKyAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBiIDw8IDQgfCBiOworICAgICAgICBkZXN0aW5hdGlvblszXSA9IGEg
PDwgNCB8IGE7CisgICAgICAgIHNvdXJjZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0
OworICAgIH0KIH0KIAotdm9pZCB1bnBhY2tSR0I1NjVUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZlJHQjU2NVRv
UkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2ln
bmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgdWludDE2X3QgcGFja2VkVmFsdWUgPSBzb3Vy
Y2VbMF07Ci0gICAgdWludDhfdCByID0gcGFja2VkVmFsdWUgPj4gMTE7Ci0gICAgdWludDhfdCBn
ID0gKHBhY2tlZFZhbHVlID4+IDUpICYgMHgzRjsKLSAgICB1aW50OF90IGIgPSBwYWNrZWRWYWx1
ZSAmIDB4MUY7Ci0gICAgZGVzdGluYXRpb25bMF0gPSAociA8PCAzKSB8IChyICYgMHg3KTsKLSAg
ICBkZXN0aW5hdGlvblsxXSA9IChnIDw8IDIpIHwgKGcgJiAweDMpOwotICAgIGRlc3RpbmF0aW9u
WzJdID0gKGIgPDwgMykgfCAoYiAmIDB4Nyk7Ci0gICAgZGVzdGluYXRpb25bM10gPSAweEZGOwor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAg
ICAgICAgdWludDE2X3QgcGFja2VkVmFsdWUgPSBzb3VyY2VbMF07CisgICAgICAgIHVpbnQ4X3Qg
ciA9IHBhY2tlZFZhbHVlID4+IDExOworICAgICAgICB1aW50OF90IGcgPSAocGFja2VkVmFsdWUg
Pj4gNSkgJiAweDNGOworICAgICAgICB1aW50OF90IGIgPSBwYWNrZWRWYWx1ZSAmIDB4MUY7Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzBdID0gKHIgPDwgMykgfCAociAmIDB4Nyk7CisgICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gKGcgPDwgMikgfCAoZyAmIDB4Myk7CisgICAgICAgIGRlc3RpbmF0aW9u
WzJdID0gKGIgPDwgMykgfCAoYiAmIDB4Nyk7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhG
RjsKKyAgICAgICAgc291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAg
fQogfQogCi12b2lkIHVucGFja1I4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4
X3QqIGRlc3RpbmF0aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZlI4VG9SR0JBOChjb25zdCB1aW50
OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOwotICAgIGRl
c3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwor
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMHhGRjsKKyAgICAgICAg
c291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lk
IHVucGFja1IxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09mUjE2TGl0dGxlVG9SR0JBOChjb25zdCB1
aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVs
c1BlclJvdykKIHsKLSAgICBkZXN0aW5hdGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84
KHNvdXJjZVswXSk7Ci0gICAgZGVzdGluYXRpb25bMV0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMF0pOwotICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZMaXR0bGVU
bzgoc291cmNlWzBdKTsKLSAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7CisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5h
dGlvblswXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRl
c3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKKyAgICAg
ICAgZGVzdGluYXRpb25bMl0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOwor
ICAgICAgICBkZXN0aW5hdGlvblszXSA9IDB4RkY7CisgICAgICAgIHNvdXJjZSArPSAxOworICAg
ICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBhY2tSMTZCaWdUb1JH
QkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCB1
bnBhY2tPbmVSb3dPZlIxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGlu
YXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOwotICAgIGRlc3RpbmF0
aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKLSAgICBkZXN0aW5hdGlv
blsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7Ci0gICAgZGVzdGluYXRpb25b
M10gPSAweEZGOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93
OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChz
b3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84
KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdU
bzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSAweEZGOworICAgICAgICBz
b3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQg
dW5wYWNrUkE4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZlJBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAg
ICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJj
ZVswXTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVswXTsKLSAgICBkZXN0aW5hdGlvblsz
XSA9IHNvdXJjZVsxXTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAg
ICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBz
b3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzFdOworICAgICAgICBz
b3VyY2UgKz0gMjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQg
dW5wYWNrUkExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCog
ZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09mUkExNkxpdHRsZVRvUkdCQTgoY29uc3Qg
dWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhl
bHNQZXJSb3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRv
OChzb3VyY2VbMF0pOwotICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0bGVU
bzgoc291cmNlWzBdKTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxl
VG84KHNvdXJjZVswXSk7Ci0gICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkxpdHRs
ZVRvOChzb3VyY2VbMV0pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxp
dHRsZVRvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xv
cjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29udmVy
dENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzBdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10gPSBj
b252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBzb3VyY2UgKz0gMjsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQgdW5wYWNrUkExNkJp
Z1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2
b2lkIHVucGFja09uZVJvd09mUkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwg
dWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAg
ZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOwotICAgIGRl
c3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKLSAgICBkZXN0
aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7Ci0gICAgZGVzdGlu
YXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMV0pOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGlu
YXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAgICAgICBkZXN0
aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVswXSk7CisgICAgICAgIGRl
c3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzBdKTsKKyAgICAgICAg
ZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMV0pOworICAgICAg
ICBzb3VyY2UgKz0gMjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZv
aWQgdW5wYWNrQVI4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZkFSOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsK
LSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVsxXTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IHNv
dXJjZVsxXTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsxXTsKLSAgICBkZXN0aW5hdGlv
blszXSA9IHNvdXJjZVswXTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVs
c1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzFdOworICAg
ICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0g
PSBzb3VyY2VbMV07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzBdOworICAgICAg
ICBzb3VyY2UgKz0gMjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZv
aWQgdW5wYWNrQVIxNkxpdHRsZVRvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhf
dCogZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09mQVIxNkxpdHRsZVRvUkdCQTgoY29u
c3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkxpdHRs
ZVRvOChzb3VyY2VbMV0pOwotICAgIGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZMaXR0
bGVUbzgoc291cmNlWzFdKTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2TGl0
dGxlVG84KHNvdXJjZVsxXSk7Ci0gICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkxp
dHRsZVRvOChzb3VyY2VbMF0pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4
ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3Ix
NkxpdHRsZVRvOChzb3VyY2VbMV0pOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRD
b2xvcjE2TGl0dGxlVG84KHNvdXJjZVsxXSk7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gY29u
dmVydENvbG9yMTZMaXR0bGVUbzgoc291cmNlWzFdKTsKKyAgICAgICAgZGVzdGluYXRpb25bM10g
PSBjb252ZXJ0Q29sb3IxNkxpdHRsZVRvOChzb3VyY2VbMF0pOworICAgICAgICBzb3VyY2UgKz0g
MjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAKLXZvaWQgdW5wYWNrQVIx
NkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24p
Cit2b2lkIHVucGFja09uZVJvd09mQVIxNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNvdXJj
ZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0g
ICAgZGVzdGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMV0pOwotICAg
IGRlc3RpbmF0aW9uWzFdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKLSAgICBk
ZXN0aW5hdGlvblsyXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7Ci0gICAgZGVz
dGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVz
dGluYXRpb25bMF0gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMV0pOworICAgICAgICBk
ZXN0aW5hdGlvblsxXSA9IGNvbnZlcnRDb2xvcjE2QmlnVG84KHNvdXJjZVsxXSk7CisgICAgICAg
IGRlc3RpbmF0aW9uWzJdID0gY29udmVydENvbG9yMTZCaWdUbzgoc291cmNlWzFdKTsKKyAgICAg
ICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAg
ICAgICBzb3VyY2UgKz0gMjsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9CiB9CiAK
LXZvaWQgdW5wYWNrQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVz
dGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09mQThUb1JHQkE4KGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7
Ci0gICAgZGVzdGluYXRpb25bMF0gPSAweDA7Ci0gICAgZGVzdGluYXRpb25bMV0gPSAweDA7Ci0g
ICAgZGVzdGluYXRpb25bMl0gPSAweDA7Ci0gICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewor
ICAgICAgICBkZXN0aW5hdGlvblswXSA9IDB4MDsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSAw
eDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gMHgwOworICAgICAgICBkZXN0aW5hdGlvblsz
XSA9IHNvdXJjZVswXTsKKyAgICAgICAgc291cmNlICs9IDE7CisgICAgICAgIGRlc3RpbmF0aW9u
ICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVucGFja0ExNkxpdHRsZVRvUkdCQTgoY29uc3QgdWlu
dDE2X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lkIHVucGFja09uZVJvd09m
QTE2TGl0dGxlVG9SR0JBOChjb25zdCB1aW50MTZfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBkZXN0aW5hdGlvblswXSA9
IDB4MDsKLSAgICBkZXN0aW5hdGlvblsxXSA9IDB4MDsKLSAgICBkZXN0aW5hdGlvblsyXSA9IDB4
MDsKLSAgICBkZXN0aW5hdGlvblszXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVsw
XSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkg
eworICAgICAgICBkZXN0aW5hdGlvblswXSA9IDB4MDsKKyAgICAgICAgZGVzdGluYXRpb25bMV0g
PSAweDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gMHgwOworICAgICAgICBkZXN0aW5hdGlv
blszXSA9IGNvbnZlcnRDb2xvcjE2TGl0dGxlVG84KHNvdXJjZVswXSk7CisgICAgICAgIHNvdXJj
ZSArPSAxOworICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAotdm9pZCB1bnBh
Y2tBMTZCaWdUb1JHQkE4KGNvbnN0IHVpbnQxNl90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uKQordm9pZCB1bnBhY2tPbmVSb3dPZkExNkJpZ1RvUkdCQTgoY29uc3QgdWludDE2X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7
Ci0gICAgZGVzdGluYXRpb25bMF0gPSAweDA7Ci0gICAgZGVzdGluYXRpb25bMV0gPSAweDA7Ci0g
ICAgZGVzdGluYXRpb25bMl0gPSAweDA7Ci0gICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29s
b3IxNkJpZ1RvOChzb3VyY2VbMF0pOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
cGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSAweDA7CisgICAg
ICAgIGRlc3RpbmF0aW9uWzFdID0gMHgwOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IDB4MDsK
KyAgICAgICAgZGVzdGluYXRpb25bM10gPSBjb252ZXJ0Q29sb3IxNkJpZ1RvOChzb3VyY2VbMF0p
OworICAgICAgICBzb3VyY2UgKz0gMTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9
CiB9CiAKLXZvaWQgdW5wYWNrUkdCMzJGVG9SR0JBMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZs
b2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQgdW5wYWNrT25lUm93T2ZSR0IzMkZUb1JHQkEzMkYoY29u
c3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxz
UGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0
aW9uWzFdID0gc291cmNlWzFdOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzJdOwotICAg
IGRlc3RpbmF0aW9uWzNdID0gMTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBp
eGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwor
ICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgZGVzdGluYXRpb25b
Ml0gPSBzb3VyY2VbMl07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKKyAgICAgICAgc291
cmNlICs9IDM7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVu
cGFja1IzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
KQordm9pZCB1bnBhY2tPbmVSb3dPZlIzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRl
c3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzBd
OwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9uWzNdID0g
MTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7
CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMF07Cisg
ICAgICAgIGRlc3RpbmF0aW9uWzNdID0gMTsKKyAgICAgICAgc291cmNlICs9IDE7CisgICAgICAg
IGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVucGFja1JBMzJGVG9SR0JBMzJG
KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQgdW5wYWNrT25l
Um93T2ZSQTMyRlRvUkdCQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBz
b3VyY2VbMF07Ci0gICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMF07Ci0gICAgZGVzdGluYXRp
b25bMl0gPSBzb3VyY2VbMF07Ci0gICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMV07CisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAg
ICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBz
b3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlWzBdOworICAgICAgICBk
ZXN0aW5hdGlvblszXSA9IHNvdXJjZVsxXTsKKyAgICAgICAgc291cmNlICs9IDI7CisgICAgICAg
IGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHVucGFja0EzMkZUb1JHQkEzMkYo
Y29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQordm9pZCB1bnBhY2tPbmVS
b3dPZkEzMkZUb1JHQkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9u
LCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gMDsK
LSAgICBkZXN0aW5hdGlvblsxXSA9IDA7Ci0gICAgZGVzdGluYXRpb25bMl0gPSAwOwotICAgIGRl
c3RpbmF0aW9uWzNdID0gc291cmNlWzBdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSAwOworICAg
ICAgICBkZXN0aW5hdGlvblsxXSA9IDA7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gMDsKKyAg
ICAgICAgZGVzdGluYXRpb25bM10gPSBzb3VyY2VbMF07CisgICAgICAgIHNvdXJjZSArPSAxOwor
ICAgICAgICBkZXN0aW5hdGlvbiArPSA0OworICAgIH0KIH0KIAogLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBQaXhlbCBwYWNraW5nIHJvdXRpbmVzLgogLy8KIAotdm9pZCBwYWNrUkdCQThUb0E4KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lkIHBhY2tPbmVSb3dP
ZlJHQkE4VG9BOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzNdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJjZSAr
PSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KIH0KIAotdm9pZCBwYWNrUkdC
QThUb1I4KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9SOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9u
WzBdID0gc291cmNlWzBdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxz
UGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAg
ICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KIH0KIAot
dm9pZCBwYWNrUkdCQThUb1I4UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50
OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQgcGFja09uZVJvd09mUkdCQThUb1I4UHJlbXVsdGlwbHko
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50
IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1
NS4wZjsKLSAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICBkZXN0aW5hdGlvblsw
XSA9IHNvdXJjZVI7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4w
ZjsKKyAgICAgICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlUjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0
aW9uICs9IDE7CisgICAgfQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFu
ZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tSR0JBOFRvUjhVbm11bHRpcGx5KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lkIHBhY2tPbmVSb3dPZlJH
QkE4VG9SOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4wZik7Ci0gICAg
dWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VS
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
KyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJjZVsz
XSAvIDI1NS4wZiA6IDEuMGYpOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsK
KyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBzb3VyY2UgKz0gNDsK
KyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9CiB9CiAKLXZvaWQgcGFja1JHQkE4VG9S
QTgoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikKK3ZvaWQgcGFj
a09uZVJvd09mUkdCQThUb1JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlWzBdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOworICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVz
dGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAg
ICB9CiB9CiAKLXZvaWQgcGFja1JHQkE4VG9SQThQcmVtdWx0aXBseShjb25zdCB1aW50OF90KiBz
b3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkE4
UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNv
dXJjZVszXSAvIDI1NS4wZjsKLSAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICBk
ZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7Ci0gICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgewor
ICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKKyAgICAgICAg
dWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291
cmNlUjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbM107CisgICAgICAgIHNvdXJj
ZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAyOworICAgIH0KIH0KIAogLy8gRklYTUU6
IHRoaXMgcm91dGluZSBpcyBsb3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdm9pZCBwYWNrUkdC
QThUb1JBOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5h
dGlvbikKK3ZvaWQgcGFja09uZVJvd09mUkdCQThUb1JBOFVubXVsdGlwbHkoY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJv
dykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNl
WzNdIC8gMjU1LjBmIDogMS4wZik7Ci0gICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0g
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
WzNdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kp
IHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJj
ZVszXSAvIDI1NS4wZiA6IDEuMGYpOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9y
KTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOworICAgICAgICBkZXN0aW5hdGlv
blsxXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0
aW9uICs9IDI7CisgICAgfQogfQogCi12b2lkIHBhY2tSR0JBOFRvUkdCOChjb25zdCB1aW50OF90
KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JBOFRv
UkdCOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdOwot
ICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlWzJdOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3Rp
bmF0aW9uWzFdID0gc291cmNlWzFdOworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsy
XTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDM7CisgICAg
fQogfQogCi12b2lkIHBhY2tSR0JBOFRvUkdCOFByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNv
dXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lkIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4
UHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwg
dW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNv
dXJjZVszXSAvIDI1NS4wZjsKLSAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1
aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4o
c291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNf
Y2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9y
KTsKLSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7Ci0gICAgZGVzdGluYXRpb25bMV0gPSBz
b3VyY2VHOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlQjsKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxl
RmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBz
dGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxl
RmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVp
bnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihz
b3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVI7CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlRzsKKyAgICAgICAgZGVzdGluYXRp
b25bMl0gPSBzb3VyY2VCOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRp
b24gKz0gMzsKKyAgICB9CiB9CiAKIC8vIEZJWE1FOiB0aGlzIHJvdXRpbmUgaXMgbG9zc3kgYW5k
IG11c3QgYmUgcmVtb3ZlZC4KLXZvaWQgcGFja1JHQkE4VG9SR0I4VW5tdWx0aXBseShjb25zdCB1
aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZS
R0JBOFRvUkdCOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4wZik7Ci0g
ICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgdWludDhfdCBzb3VyY2VHID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZh
Y3Rvcik7Ci0gICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgZGVzdGluYXRpb25b
MF0gPSBzb3VyY2VSOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlRzsKLSAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZUI7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhl
bHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291
cmNlWzNdID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4wZik7CisgICAgICAgIHVpbnQ4X3Qgc291
cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0p
ICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1
aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBd
ID0gc291cmNlUjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOworICAgICAgICBk
ZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBk
ZXN0aW5hdGlvbiArPSAzOworICAgIH0KIH0KIAogLy8gVGhpcyBpcyBvbmx5IHVzZWQgd2hlbiB0
aGUgc291cmNlIGZvcm1hdCBpcyBkaWZmZXJlbnQgdGhhbiBTb3VyY2VGb3JtYXRSR0JBOC4KLXZv
aWQgcGFja1JHQkE4VG9SR0JBOChjb25zdCB1aW50OF90KiBzb3VyY2UsIHVpbnQ4X3QqIGRlc3Rp
bmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQTgoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsK
LSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsKLSAgICBkZXN0aW5hdGlvblsxXSA9IHNv
dXJjZVsxXTsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXTsKLSAgICBkZXN0aW5hdGlv
blszXSA9IHNvdXJjZVszXTsKLX0KLQotdm9pZCBwYWNrUkdCQThUb1JHQkE4UHJlbXVsdGlwbHko
Y29uc3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbikKLXsKLSAgICBmbG9h
dCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXSAvIDI1NS4wZjsKLSAgICB1aW50OF90IHNvdXJjZVIg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNj
YWxlRmFjdG9yKTsKLSAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50OF90
IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNl
WzJdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7Ci0gICAg
ZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOwotICAgIGRlc3RpbmF0aW9uWzJdID0gc291cmNlQjsK
LSAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0g
c291cmNlWzBdOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXTsKKyAgICAgICAg
ZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl07CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291
cmNlWzNdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsK
KyAgICB9Cit9CisKK3ZvaWQgcGFja09uZVJvd09mUkdCQThUb1JHQkE4UHJlbXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBp
eGVsc1BlclJvdykKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1Bl
clJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1
LjBmOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVI7CisgICAgICAgIGRlc3RpbmF0aW9u
WzFdID0gc291cmNlRzsKKyAgICAgICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VCOworICAgICAg
ICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5l
IGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQuCi12b2lkIHBhY2tSR0JBOFRvUkdCQThVbm11
bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDhfdCogZGVzdGluYXRpb24pCit2b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBOFVubXVsdGlwbHkoY29uc3QgdWludDhfdCogc291cmNl
LCB1aW50OF90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAg
ICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNdID8gc291cmNlWzNdIC8gMjU1
LjBmIDogMS4wZik7Ci0gICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWludDhfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7Ci0g
ICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VSOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNl
RzsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZUI7Ci0gICAgZGVzdGluYXRpb25bM10gPSBz
b3VyY2VbM107Ci19Ci0KLXZvaWQgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0NDQ0NChjb25zdCB1
aW50OF90KiBzb3VyY2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbikKLXsKLSAgICAqZGVzdGluYXRp
b24gPSAoKChzb3VyY2VbMF0gJiAweEYwKSA8PCA4KQotICAgICAgICAgICAgICAgICAgICB8ICgo
c291cmNlWzFdICYgMHhGMCkgPDwgNCkKLSAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzJd
ICYgMHhGMCkKLSAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsKLX0KLQot
dm9pZCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0UHJlbXVsdGlwbHkoY29uc3QgdWludDhf
dCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24pCi17Ci0gICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7
Ci0gICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgdWludDhfdCBzb3VyY2VCID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2Fs
ZUZhY3Rvcik7Ci0gICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjApIDw8IDgpCi0g
ICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGMCkgPDwgNCkKLSAgICAgICAgICAg
ICAgICAgICAgfCAoc291cmNlQiAmIDB4RjApCi0gICAgICAgICAgICAgICAgICAgIHwgKHNvdXJj
ZVszXSA+PiA0KSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJS
b3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEuMGYgLyAoc291cmNlWzNd
ID8gc291cmNlWzNdIC8gMjU1LjBmIDogMS4wZik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlUiA9
IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2Nh
bGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAg
dWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIGRlc3RpbmF0aW9uWzBdID0gc291
cmNlUjsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VHOworICAgICAgICBkZXN0aW5h
dGlvblsyXSA9IHNvdXJjZUI7CisgICAgICAgIGRlc3RpbmF0aW9uWzNdID0gc291cmNlWzNdOwor
ICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gNDsKKyAgICB9Cit9
CisKK3ZvaWQgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVy
Um93KQoreworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyAr
K2kpIHsKKyAgICAgICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlWzBdICYgMHhGMCkgPDwgOCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAweEYwKSA8PCA0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzJdICYgMHhGMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA0KSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAg
ICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordm9pZCBwYWNrT25lUm93T2ZSR0JB
OFRvVW5zaWduZWRTaG9ydDQ0NDRQcmVtdWx0aXBseShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAg
IGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOworICAgICAgICB1aW50OF90
IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNl
WzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7
CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19j
YXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOworICAgICAgICAqZGVzdGluYXRp
b24gPSAoKChzb3VyY2VSICYgMHhGMCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwg
KChzb3VyY2VHICYgMHhGMCkgPDwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJj
ZUIgJiAweEYwKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQog
fQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJlbW92ZWQu
Ci12b2lkIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDQ0NDRVbm11bHRpcGx5KGNvbnN0IHVpbnQ4
X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JB
OFRvVW5zaWduZWRTaG9ydDQ0NDRVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGZs
b2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2VbM10gLyAyNTUuMGYg
OiAxLjBmKTsKLSAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50OF90IHNv
dXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFd
KSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2FzdDx1aW50
OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICAq
ZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGMCkgPDwgOCkKLSAgICAgICAgICAgICAgICAg
ICAgfCAoKHNvdXJjZUcgJiAweEYwKSA8PCA0KQotICAgICAgICAgICAgICAgICAgICB8IChzb3Vy
Y2VCICYgMHhGMCkKLSAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsKLX0K
LQotdm9pZCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxKGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uKQotewotICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJj
ZVswXSAmIDB4RjgpIDw8IDgpCi0gICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VbMV0gJiAw
eEY4KSA8PCAzKQotICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzJdICYgMHhGOCkgPj4g
MikKLSAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDcpKTsKLX0KLQotdm9pZCBw
YWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxUHJlbXVsdGlwbHkoY29uc3QgdWludDhfdCogc291
cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24pCi17Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBz
b3VyY2VbM10gLyAyNTUuMGY7Ci0gICAgdWludDhfdCBzb3VyY2VSID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVswXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAg
dWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7Ci0gICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGlj
X2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rv
cik7Ci0gICAgKmRlc3RpbmF0aW9uID0gKCgoc291cmNlUiAmIDB4RjgpIDw8IDgpCi0gICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwgMykKLSAgICAgICAgICAgICAgICAg
ICAgfCAoKHNvdXJjZUIgJiAweEY4KSA+PiAyKQotICAgICAgICAgICAgICAgICAgICB8IChzb3Vy
Y2VbM10gPj4gNykpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVy
Um93OyArK2kpIHsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVsz
XSA/IHNvdXJjZVszXSAvIDI1NS4wZiA6IDEuMGYpOworICAgICAgICB1aW50OF90IHNvdXJjZVIg
PSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNj
YWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAg
IHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0
Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChz
b3VyY2VSICYgMHhGMCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VH
ICYgMHhGMCkgPDwgNCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZUIgJiAweEYw
KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+IDQpKTsKKyAgICAgICAg
c291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit2b2lk
IHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTU1MShjb25zdCB1aW50OF90KiBzb3Vy
Y2UsIHVpbnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK3sK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7Cisg
ICAgICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjgpIDw8IDgpCisgICAgICAg
ICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhGOCkgPDwgMykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VbMl0gJiAweEY4KSA+PiAyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgfCAoc291cmNlWzNdID4+IDcpKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAg
ICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQorfQorCit2b2lkIHBhY2tPbmVSb3dPZlJHQkE4
VG9VbnNpZ25lZFNob3J0NTU1MVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWlu
dDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQoreworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAgIHVpbnQ4X3Qg
c291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2Vb
MF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsK
KyAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpkZXN0aW5hdGlv
biA9ICgoKHNvdXJjZVIgJiAweEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgfCAo
KHNvdXJjZUcgJiAweEY4KSA8PCAzKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoKHNvdXJj
ZUIgJiAweEY4KSA+PiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAoc291cmNlWzNdID4+
IDcpKTsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7Cisg
ICAgfQogfQogCiAvLyBGSVhNRTogdGhpcyByb3V0aW5lIGlzIGxvc3N5IGFuZCBtdXN0IGJlIHJl
bW92ZWQuCi12b2lkIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDU1NTFVbm11bHRpcGx5KGNvbnN0
IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93
T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU1NTFVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewot
ICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMS4wZiAvIChzb3VyY2VbM10gPyBzb3VyY2VbM10gLyAy
NTUuMGYgOiAxLjBmKTsKLSAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90
PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50
OF90IHNvdXJjZUcgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291
cmNlWzFdKSAqIHNjYWxlRmFjdG9yKTsKLSAgICB1aW50OF90IHNvdXJjZUIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzJdKSAqIHNjYWxlRmFjdG9yKTsK
LSAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkKLSAgICAgICAgICAg
ICAgICAgICAgfCAoKHNvdXJjZUcgJiAweEY4KSA8PCAzKQotICAgICAgICAgICAgICAgICAgICB8
ICgoc291cmNlQiAmIDB4RjgpID4+IDIpCi0gICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZVsz
XSA+PiA3KSk7Ci19Ci0KLXZvaWQgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0NTY1KGNvbnN0IHVp
bnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uKQotewotICAgICpkZXN0aW5hdGlv
biA9ICgoKHNvdXJjZVswXSAmIDB4RjgpIDw8IDgpCi0gICAgICAgICAgICAgICAgICAgIHwgKChz
b3VyY2VbMV0gJiAweEZDKSA8PCAzKQotICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlWzJd
ICYgMHhGOCkgPj4gMykpOwotfQotCi12b2lkIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVBy
ZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uKQot
ewotICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdIC8gMjU1LjBmOwotICAgIHVpbnQ4
X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3Vy
Y2VbMF0pICogc2NhbGVGYWN0b3IpOwotICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0
PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOwot
ICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZs
b2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3IpOwotICAgICpkZXN0aW5hdGlvbiA9ICgoKHNv
dXJjZVIgJiAweEY4KSA8PCA4KQotICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4
RkMpIDw8IDMpCi0gICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMykp
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
KyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJjZVsz
XSAvIDI1NS4wZiA6IDEuMGYpOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsK
KyAgICAgICAgdWludDhfdCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHNvdXJjZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291
cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0p
ICogc2NhbGVGYWN0b3IpOworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhG
OCkgPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGOCkgPDwg
MykKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHwgKHNvdXJjZVszXSA+PiA3KSk7CisgICAgICAgIHNvdXJj
ZSArPSA0OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordm9pZCBwYWNr
T25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NShjb25zdCB1aW50OF90KiBzb3VyY2UsIHVp
bnQxNl90KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKK3sKKyAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAg
ICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVswXSAmIDB4RjgpIDw8IDgpCisgICAgICAgICAgICAg
ICAgICAgICAgICB8ICgoc291cmNlWzFdICYgMHhGQykgPDwgMykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgKChzb3VyY2VbMl0gJiAweEY4KSA+PiAzKSk7CisgICAgICAgIHNvdXJjZSArPSA0
OworICAgICAgICBkZXN0aW5hdGlvbiArPSAxOworICAgIH0KK30KKwordm9pZCBwYWNrT25lUm93
T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVByZW11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJj
ZSwgdWludDE2X3QqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQorewor
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAg
ICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM10gLyAyNTUuMGY7CisgICAgICAgIHVp
bnQ4X3Qgc291cmNlUiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihz
b3VyY2VbMF0pICogc2NhbGVGYWN0b3IpOworICAgICAgICB1aW50OF90IHNvdXJjZUcgPSBzdGF0
aWNfY2FzdDx1aW50OF90PihzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlWzFdKSAqIHNjYWxlRmFj
dG9yKTsKKyAgICAgICAgdWludDhfdCBzb3VyY2VCID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVsyXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgICpkZXN0
aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEY4KSA8PCA4KQorICAgICAgICAgICAgICAgICAgICAg
ICAgfCAoKHNvdXJjZUcgJiAweEZDKSA8PCAzKQorICAgICAgICAgICAgICAgICAgICAgICAgfCAo
KHNvdXJjZUIgJiAweEY4KSA+PiAzKSk7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBk
ZXN0aW5hdGlvbiArPSAxOworICAgIH0KIH0KIAogLy8gRklYTUU6IHRoaXMgcm91dGluZSBpcyBs
b3NzeSBhbmQgbXVzdCBiZSByZW1vdmVkLgotdm9pZCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1
NjVVbm11bHRpcGx5KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgdWludDE2X3QqIGRlc3RpbmF0aW9u
KQordm9pZCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVVubXVsdGlwbHkoY29u
c3QgdWludDhfdCogc291cmNlLCB1aW50MTZfdCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBw
aXhlbHNQZXJSb3cpCiB7Ci0gICAgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVsz
XSA/IHNvdXJjZVszXSAvIDI1NS4wZiA6IDEuMGYpOwotICAgIHVpbnQ4X3Qgc291cmNlUiA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMF0pICogc2NhbGVG
YWN0b3IpOwotICAgIHVpbnQ4X3Qgc291cmNlRyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRp
Y19jYXN0PGZsb2F0Pihzb3VyY2VbMV0pICogc2NhbGVGYWN0b3IpOwotICAgIHVpbnQ4X3Qgc291
cmNlQiA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0p
ICogc2NhbGVGYWN0b3IpOwotICAgICpkZXN0aW5hdGlvbiA9ICgoKHNvdXJjZVIgJiAweEY4KSA8
PCA4KQotICAgICAgICAgICAgICAgICAgICB8ICgoc291cmNlRyAmIDB4RkMpIDw8IDMpCi0gICAg
ICAgICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMykpOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3IgPSAxLjBmIC8gKHNvdXJjZVszXSA/IHNvdXJjZVszXSAvIDI1NS4wZiA6IDEu
MGYpOworICAgICAgICB1aW50OF90IHNvdXJjZVIgPSBzdGF0aWNfY2FzdDx1aW50OF90PihzdGF0
aWNfY2FzdDxmbG9hdD4oc291cmNlWzBdKSAqIHNjYWxlRmFjdG9yKTsKKyAgICAgICAgdWludDhf
dCBzb3VyY2VHID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJj
ZVsxXSkgKiBzY2FsZUZhY3Rvcik7CisgICAgICAgIHVpbnQ4X3Qgc291cmNlQiA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihzb3VyY2VbMl0pICogc2NhbGVGYWN0b3Ip
OworICAgICAgICAqZGVzdGluYXRpb24gPSAoKChzb3VyY2VSICYgMHhGOCkgPDwgOCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHwgKChzb3VyY2VHICYgMHhGQykgPDwgMykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHwgKChzb3VyY2VCICYgMHhGOCkgPj4gMykpOworICAgICAgICBzb3VyY2Ug
Kz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMTsKKyAgICB9CiB9CiAKLXZvaWQgcGFja1JH
QkEzMkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRpb24pCit2
b2lkIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JHQjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF07Ci0gICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07Ci0g
ICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl07CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNv
dXJjZVswXTsKKyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV07CisgICAgICAgIGRl
c3RpbmF0aW9uWzJdID0gc291cmNlWzJdOworICAgICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAg
ZGVzdGluYXRpb24gKz0gMzsKKyAgICB9CiB9CiAKLXZvaWQgcGFja1JHQkEzMkZUb1JHQjMyRlBy
ZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQg
cGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAg
IGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNdOwotICAgIGRlc3RpbmF0aW9uWzBdID0gc291
cmNlWzBdICogc2NhbGVGYWN0b3I7Ci0gICAgZGVzdGluYXRpb25bMV0gPSBzb3VyY2VbMV0gKiBz
Y2FsZUZhY3RvcjsKLSAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9y
OworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsK
KyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzb3VyY2VbM107CisgICAgICAgIGRlc3RpbmF0
aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzFd
ID0gc291cmNlWzFdICogc2NhbGVGYWN0b3I7CisgICAgICAgIGRlc3RpbmF0aW9uWzJdID0gc291
cmNlWzJdICogc2NhbGVGYWN0b3I7CisgICAgICAgIHNvdXJjZSArPSA0OworICAgICAgICBkZXN0
aW5hdGlvbiArPSAzOworICAgIH0KIH0KIAotdm9pZCBwYWNrUkdCQTMyRlRvUkdCQTMyRlByZW11
bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQgcGFj
a09uZVJvd09mUkdCQTMyRlRvUkdCQTMyRlByZW11bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2Us
IGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgaW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKLSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJj
ZVswXSAqIHNjYWxlRmFjdG9yOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzFdICogc2Nh
bGVGYWN0b3I7Ci0gICAgZGVzdGluYXRpb25bMl0gPSBzb3VyY2VbMl0gKiBzY2FsZUZhY3RvcjsK
LSAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IHBpeGVsc1BlclJvdzsgKytpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9y
ID0gc291cmNlWzNdOworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxl
RmFjdG9yOworICAgICAgICBkZXN0aW5hdGlvblsxXSA9IHNvdXJjZVsxXSAqIHNjYWxlRmFjdG9y
OworICAgICAgICBkZXN0aW5hdGlvblsyXSA9IHNvdXJjZVsyXSAqIHNjYWxlRmFjdG9yOworICAg
ICAgICBkZXN0aW5hdGlvblszXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291cmNlICs9IDQ7Cisg
ICAgICAgIGRlc3RpbmF0aW9uICs9IDQ7CisgICAgfQogfQogCi12b2lkIHBhY2tSR0JBMzJGVG9B
MzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQgcGFja09u
ZVJvd09mUkdCQTMyRlRvQTMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdGluYXRp
b24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGluYXRpb25bMF0gPSBz
b3VyY2VbM107CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7
ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVszXTsKKyAgICAgICAgc291
cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQogfQogCi12b2lkIHBh
Y2tSR0JBMzJGVG9SMzJGKGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikK
K3ZvaWQgcGFja09uZVJvd09mUkdCQTMyRlRvUjMyRihjb25zdCBmbG9hdCogc291cmNlLCBmbG9h
dCogZGVzdGluYXRpb24sIHVuc2lnbmVkIGludCBwaXhlbHNQZXJSb3cpCiB7Ci0gICAgZGVzdGlu
YXRpb25bMF0gPSBzb3VyY2VbMF07CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBw
aXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXTsK
KyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDE7CisgICAgfQog
fQogCi12b2lkIHBhY2tSR0JBMzJGVG9SMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJj
ZSwgZmxvYXQqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SMzJGUHJl
bXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1bnNpZ25l
ZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gc291cmNlWzNd
OwotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNlWzBdICogc2NhbGVGYWN0b3I7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBm
bG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBz
b3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9IDQ7CisgICAgICAgIGRl
c3RpbmF0aW9uICs9IDE7CisgICAgfQogfQogCiAKLXZvaWQgcGFja1JHQkEzMkZUb1JBMzJGKGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbikKK3ZvaWQgcGFja09uZVJvd09m
UkdCQTMyRlRvUkEzMkYoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBpbnQgcGl4ZWxzUGVyUm93KQogewotICAgIGRlc3RpbmF0aW9uWzBdID0gc291cmNl
WzBdOwotICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOworICAgIGZvciAodW5zaWduZWQg
aW50IGkgPSAwOyBpIDwgcGl4ZWxzUGVyUm93OyArK2kpIHsKKyAgICAgICAgZGVzdGluYXRpb25b
MF0gPSBzb3VyY2VbMF07CisgICAgICAgIGRlc3RpbmF0aW9uWzFdID0gc291cmNlWzNdOworICAg
ICAgICBzb3VyY2UgKz0gNDsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gMjsKKyAgICB9CiB9CiAK
LXZvaWQgcGFja1JHQkEzMkZUb1JBMzJGUHJlbXVsdGlwbHkoY29uc3QgZmxvYXQqIHNvdXJjZSwg
ZmxvYXQqIGRlc3RpbmF0aW9uKQordm9pZCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SQTMyRlByZW11
bHRpcGx5KGNvbnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0aW5hdGlvbiwgdW5zaWduZWQg
aW50IHBpeGVsc1BlclJvdykKIHsKLSAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJjZVszXTsK
LSAgICBkZXN0aW5hdGlvblswXSA9IHNvdXJjZVswXSAqIHNjYWxlRmFjdG9yOwotICAgIGRlc3Rp
bmF0aW9uWzFdID0gc2NhbGVGYWN0b3I7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBwaXhlbHNQZXJSb3c7ICsraSkgeworICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNvdXJj
ZVszXTsKKyAgICAgICAgZGVzdGluYXRpb25bMF0gPSBzb3VyY2VbMF0gKiBzY2FsZUZhY3RvcjsK
KyAgICAgICAgZGVzdGluYXRpb25bMV0gPSBzY2FsZUZhY3RvcjsKKyAgICAgICAgc291cmNlICs9
IDQ7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IDI7CisgICAgfQogfQogCiB9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKQEAgLTg5OCw0OCArMTE1MiwzMSBAQCB2b2lkIHBhY2tSR0JBMzJGVG9SQTMy
RlByZW11bHRpcGx5KGNvbnN0CiAvLyBUaGlzIGlzIHVzZWQgd2hlbmV2ZXIgdW5wYWNraW5nIGlz
IG5lY2Vzc2FyeTsgaS5lLiwgdGhlIHNvdXJjZSBkYXRhCiAvLyBpcyBub3QgaW4gUkdCQTgvUkdC
QTMyRiBmb3JtYXQsIG9yIHRoZSB1bnBhY2sgYWxpZ25tZW50IHNwZWNpZmllcwogLy8gdGhhdCBy
b3dzIGFyZSBub3QgdGlnaHRseSBwYWNrZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBl
LCB0eXBlbmFtZSBJbnRlcm1lZGlhdGVUeXBlLCB0eXBlbmFtZSBEZXN0VHlwZSwKLSAgICAgICAg
IHZvaWQgdW5wYWNraW5nRnVuYyhjb25zdCBTb3VyY2VUeXBlKiwgSW50ZXJtZWRpYXRlVHlwZSop
LAotICAgICAgICAgdm9pZCBwYWNraW5nRnVuYyhjb25zdCBJbnRlcm1lZGlhdGVUeXBlKiwgRGVz
dFR5cGUqKT4KK3RlbXBsYXRlPHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIEludGVybWVk
aWF0ZVR5cGUsIHR5cGVuYW1lIERlc3RUeXBlPgogc3RhdGljIHZvaWQgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nKGNvbnN0IFNvdXJjZVR5cGUqIHNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAoKnJvd1VucGFja2luZ0Z1bmMpKGNvbnN0IFNvdXJjZVR5cGUq
LCBJbnRlcm1lZGlhdGVUeXBlKiwgdW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJS
b3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdFR5cGUqIGRlc3RpbmF0
aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcm93UGFj
a2luZ0Z1bmMpKGNvbnN0IEludGVybWVkaWF0ZVR5cGUqLCBEZXN0VHlwZSosIHVuc2lnbmVkIGlu
dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCkKIHsKLSAgICBpZiAoIXNvdXJjZUVsZW1lbnRzUGVyUm93
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50cyA9IHdpZHRoICogaGVpZ2h0ICog
c291cmNlRWxlbWVudHNQZXJQaXhlbDsKLSAgICAgICAgY29uc3QgU291cmNlVHlwZSogZW5kUG9p
bnRlciA9IHNvdXJjZURhdGEgKyBudW1FbGVtZW50czsKLSAgICAgICAgSW50ZXJtZWRpYXRlVHlw
ZSB0ZW1wb3JhcnlSR0JBRGF0YVs0XTsKLSAgICAgICAgd2hpbGUgKHNvdXJjZURhdGEgPCBlbmRQ
b2ludGVyKSB7Ci0gICAgICAgICAgICB1bnBhY2tpbmdGdW5jKHNvdXJjZURhdGEsIHRlbXBvcmFy
eVJHQkFEYXRhKTsKLSAgICAgICAgICAgIHBhY2tpbmdGdW5jKHRlbXBvcmFyeVJHQkFEYXRhLCBk
ZXN0aW5hdGlvbkRhdGEpOwotICAgICAgICAgICAgc291cmNlRGF0YSArPSBzb3VyY2VFbGVtZW50
c1BlclBpeGVsOwotICAgICAgICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIEludGVybWVk
aWF0ZVR5cGUgdGVtcG9yYXJ5UkdCQURhdGFbNF07Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50
IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgICAgIGNvbnN0IFNvdXJjZVR5cGUq
IGN1cnJlbnRTb3VyY2UgPSBzb3VyY2VEYXRhOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgdW5wYWNraW5nRnVu
YyhjdXJyZW50U291cmNlLCB0ZW1wb3JhcnlSR0JBRGF0YSk7Ci0gICAgICAgICAgICAgICAgcGFj
a2luZ0Z1bmModGVtcG9yYXJ5UkdCQURhdGEsIGRlc3RpbmF0aW9uRGF0YSk7Ci0gICAgICAgICAg
ICAgICAgY3VycmVudFNvdXJjZSArPSBzb3VyY2VFbGVtZW50c1BlclBpeGVsOwotICAgICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWw7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VEYXRhICs9IHNvdXJjZUVsZW1lbnRzUGVy
Um93OwotICAgICAgICB9CisgICAgT3duQXJyYXlQdHI8SW50ZXJtZWRpYXRlVHlwZT4gdGVtcG9y
YXJ5UkdCQURhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyBJbnRlcm1lZGlhdGVUeXBlW3dpZHRoICog
NF0pOworICAgIGNvbnN0IFNvdXJjZVR5cGUqIGVuZFBvaW50ZXIgPSBzb3VyY2VEYXRhICsgaGVp
Z2h0ICogc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJSb3cgPSB3aWR0aCAqIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKKyAg
ICB3aGlsZSAoc291cmNlRGF0YSA8IGVuZFBvaW50ZXIpIHsKKyAgICAgICAgcm93VW5wYWNraW5n
RnVuYyhzb3VyY2VEYXRhLCB0ZW1wb3JhcnlSR0JBRGF0YS5nZXQoKSwgd2lkdGgpOworICAgICAg
ICByb3dQYWNraW5nRnVuYyh0ZW1wb3JhcnlSR0JBRGF0YS5nZXQoKSwgZGVzdGluYXRpb25EYXRh
LCB3aWR0aCk7CisgICAgICAgIHNvdXJjZURhdGEgKz0gc291cmNlRWxlbWVudHNQZXJSb3c7Cisg
ICAgICAgIGRlc3RpbmF0aW9uRGF0YSArPSBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUm93OwogICAg
IH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU291cmNlVHlwZT4KLXN0YXRpYyB2b2lkIGNvbXB1
dGVJbmNyZW1lbnRQYXJhbWV0ZXJzKHVuc2lnbmVkIGludCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc1BlclBpeGVsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHVucGFja0Fs
aWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCogc291cmNlRWxlbWVudHNQZXJQaXhlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCogc291cmNlRWxlbWVudHNQZXJSb3cpCitzdGF0aWMg
dW5zaWduZWQgaW50IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdyh1bnNpZ25lZCBpbnQgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgYnl0ZXNQZXJQaXhlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgdW5z
aWduZWQgaW50IGVsZW1lbnRTaXplSW5CeXRlcyA9IHNpemVvZihTb3VyY2VUeXBlKTsKICAgICBB
U1NFUlQoZWxlbWVudFNpemVJbkJ5dGVzIDw9IGJ5dGVzUGVyUGl4ZWwpOwpAQCAtOTUxLDIwNyAr
MTE4OCwxNzEgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnModQogICAg
ICAgICBpZiAocmVtYWluZGVyKQogICAgICAgICAgICAgdG90YWxSb3dCeXRlcyArPSAodW5wYWNr
QWxpZ25tZW50IC0gcmVtYWluZGVyKTsKICAgICB9Ci0gICAgKnNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwgPSBieXRlc1BlclBpeGVsIC8gZWxlbWVudFNpemVJbkJ5dGVzOwotICAgIGlmICh2YWxpZFJv
d0J5dGVzID09IHRvdGFsUm93Qnl0ZXMpCi0gICAgICAgICpzb3VyY2VFbGVtZW50c1BlclJvdyA9
IDA7Ci0gICAgZWxzZQotICAgICAgICAqc291cmNlRWxlbWVudHNQZXJSb3cgPSB0b3RhbFJvd0J5
dGVzIC8gZWxlbWVudFNpemVJbkJ5dGVzOworICAgIHJldHVybiB0b3RhbFJvd0J5dGVzIC8gZWxl
bWVudFNpemVJbkJ5dGVzOwogfQogCiAvLyBUaGlzIGhhbmRsZXMgYWxsIGNvbnZlcnNpb25zIHdp
dGggYSBmYXN0ZXIgcGF0aCBmb3IgdGlnaHRseSBwYWNrZWQgUkdCQTggc291cmNlIGRhdGEuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBEZXN0VHlwZSwgdm9pZCBwYWNraW5nRnVuYyhjb25zdCB1aW50OF90
KiwgRGVzdFR5cGUqKT4KK3RlbXBsYXRlPHR5cGVuYW1lIERlc3RUeXBlPgogc3RhdGljIHZvaWQg
ZG9QYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZURhdGFGb3JtYXQgc291cmNlRGF0YUZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlVW5wYWNrQWxpZ25tZW50LAogICAgICAgICAgICAgICAgICAgICAgIERlc3RU
eXBlKiBkZXN0aW5hdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJvd1Bh
Y2tpbmdGdW5jKShjb25zdCB1aW50OF90KiwgRGVzdFR5cGUqLCB1bnNpZ25lZCBpbnQpLAogICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4
ZWwpCiB7CiAgICAgc3dpdGNoIChzb3VyY2VEYXRhRm9ybWF0KSB7CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTg6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21w
dXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxp
Z25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsK
LSAgICAgICAgaWYgKCFzb3VyY2VFbGVtZW50c1BlclJvdykgewotICAgICAgICAgICAgY29uc3Qg
dWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEp
OwotICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bUVsZW1lbnRzID0gd2lkdGggKiBoZWlnaHQg
KiA0OwotICAgICAgICAgICAgY29uc3QgdWludDhfdCogZW5kUG9pbnRlciA9IHNvdXJjZSArIG51
bUVsZW1lbnRzOwotICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGVuZFBvaW50ZXIpIHsKLSAg
ICAgICAgICAgICAgICBwYWNraW5nRnVuYyhzb3VyY2UsIGRlc3RpbmF0aW9uRGF0YSk7Ci0gICAg
ICAgICAgICAgICAgc291cmNlICs9IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWw7Ci0gICAgICAgICAg
ICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCQThUb1JHQkE4LCBw
YWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZURhdGEpLCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywg
ZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICB1
bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxlbWVudHNQ
ZXJSb3c8dWludDhfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAg
IGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3Vy
Y2VEYXRhKTsKKyAgICAgICAgY29uc3QgdWludDhfdCogZW5kUG9pbnRlciA9IHNvdXJjZSArIGhl
aWdodCAqIHNvdXJjZUVsZW1lbnRzUGVyUm93OworICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdGlu
YXRpb25FbGVtZW50c1BlclJvdyA9IHdpZHRoICogZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
OworICAgICAgICB3aGlsZSAoc291cmNlIDwgZW5kUG9pbnRlcikgeworICAgICAgICAgICAgcm93
UGFja2luZ0Z1bmMoc291cmNlLCBkZXN0aW5hdGlvbkRhdGEsIHdpZHRoKTsKKyAgICAgICAgICAg
IHNvdXJjZSArPSBzb3VyY2VFbGVtZW50c1BlclJvdzsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9u
RGF0YSArPSBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUm93OwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0JB
MTZMaXR0bGU6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
IHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVy
czx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQkExNkxpdHRs
ZVRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJj
ZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291
cmNlRWxlbWVudHNQZXJSb3c8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERl
c3RUeXBlPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tP
bmVSb3dPZlJHQkExNkxpdHRsZVRvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1l
bnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTE2QmlnOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cp
OwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSR0JBMTZCaWdUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQ
ZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRz
UGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQxNl90Pih3aWR0aCwgOCwg
c291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCB1aW50OF90LCBEZXN0VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
b3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZSR0JBMTZCaWdUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywg
ZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQjg6IHsKLSAgICAgICAgdW5z
aWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93Owot
ICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwgMywgc291
cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1l
bnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4
X3QsIERlc3RUeXBlLCB1bnBhY2tSR0I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGlu
YXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1l
bnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCAz
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8
dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
b3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZSR0I4VG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3Rp
bmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZTogewotICAgICAgICB1
bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7
Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgNiwg
c291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVs
ZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1
aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkdCMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4o
c3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwg
c291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQx
Nl90Pih3aWR0aCwgNiwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tp
bmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZT4oc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZSR0IxNkxpdHRsZVRvUkdC
QTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdC
MTZCaWc6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNv
dXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1
aW50MTZfdD4od2lkdGgsIDYsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5k
UGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQjE2QmlnVG9SR0JB
OCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSks
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAg
ICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVt
ZW50c1BlclJvdzx1aW50MTZfdD4od2lkdGgsIDYsIHNvdXJjZVVucGFja0FsaWdubWVudCk7Cisg
ICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09m
UkdCMTZCaWdUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVs
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNv
dXJjZUZvcm1hdEJHUjg6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFy
YW1ldGVyczx1aW50OF90Pih3aWR0aCwgMywgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1I4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAg
ICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVs
ZW1lbnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCAzLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOwor
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGU+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZC
R1I4VG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0
aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VG
b3JtYXRBUkdCODogewotICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0
ZXJzPHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVt
ZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FSR0I4VG9SR0JB
OCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1l
bnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAg
ICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZBUkdC
OFRvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9y
bWF0QVJHQjE2TGl0dGxlOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAgICAgY29tcHV0ZUluY3JlbWVudFBh
cmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUkdC
MTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3Qq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29t
cHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNlVW5wYWNr
QWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50
OF90LCBEZXN0VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwg
dW5wYWNrT25lUm93T2ZBUkdCMTZMaXR0bGVUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VF
bGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywgZGVzdGluYXRp
b25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEFSR0IxNkJpZzogewotICAgICAgICB1bnNpZ25l
ZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7Ci0gICAg
ICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3aWR0aCwgOCwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRz
UGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90
LCBEZXN0VHlwZSwgdW5wYWNrQVJHQjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRl
c3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VF
bGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50MTZfdD4od2lk
dGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFj
a2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQx
Nl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQVJHQjE2QmlnVG9SR0JBOCwgd2lkdGgs
IGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93UGFja2lu
Z0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBQkdSODogewotICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQ4X3Q+KHdpZHRo
LCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291
cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhf
dCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0FCR1I4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291
cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0
YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNv
dXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQ4X3Q+
KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2luZ0Fu
ZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZBQkdSOFRvUkdCQTgsIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdG
dW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QkdSQTg6IHsKLSAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVy
Um93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90Pih3aWR0aCwg
NCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQ4X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tCR1JBOFRvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3Vy
Y2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50OF90Pih3
aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQ
YWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlPihzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQkdSQThUb1JHQkE4LCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVu
YywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEJHUkExNkxpdHRsZTogewot
ICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3
aWR0aCwgOCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
JnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQkdSQTE2TGl0dGxlVG9SR0JBOCwgcGFj
a2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVu
c2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1Bl
clJvdzx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQkdSQTE2
TGl0dGxlVG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3Rp
bmF0aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3Vy
Y2VGb3JtYXRCR1JBMTZCaWc6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50
UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNv
dXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRv
VW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0JH
UkExNkJpZ1RvUkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+
KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3Vy
Y2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVy
UGl4ZWwpOworICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21w
dXRlU291cmNlRWxlbWVudHNQZXJSb3c8dWludDE2X3Q+KHdpZHRoLCA4LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4
X3QsIERlc3RUeXBlPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1
bnBhY2tPbmVSb3dPZkJHUkExNkJpZ1RvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1l
bnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVs
ZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRm9ybWF0UkdCQTU1NTE6IHsKLSAgICAgICAgdW5zaWduZWQgaW50
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBj
b21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJv
dyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVz
dFR5cGUsIHVucGFja1JHQkE1NTUxVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRz
UGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50
c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50MTZfdD4od2lkdGgsIDIs
IHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1
aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
c291cmNlRGF0YSksIHVucGFja09uZVJvd09mUkdCQTU1NTFUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywg
ZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFJHQkE0NDQ0OiB7Ci0gICAgICAg
IHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJv
dzsKLSAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCAy
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNl
RWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3Qs
IHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSR0JBNDQ0NFRvUkdCQTgsIHBhY2tpbmdGdW5jPihz
dGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwgaGVpZ2h0LCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25E
YXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICB1bnNpZ25lZCBpbnQg
c291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxlbWVudHNQZXJSb3c8dWludDE2
X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2lu
Z0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tPbmVSb3dPZlJHQkE0NDQ0VG9SR0JBOCwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93
UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSR0I1NjU6
IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZf
dD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2lu
Zzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JHQjU2NVRvUkdCQTgsIHBhY2tp
bmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxlbWVudHNQZXJS
b3c8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBk
b1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlPihzdGF0aWNf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tPbmVSb3dPZlJHQjU2NVRv
UkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRh
dGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0
Ujg6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJj
ZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50
OF90Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tSOFRvUkdCQTgsIHBhY2tpbmdG
dW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1
aW50OF90Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBh
Y2tpbmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mUjhUb1JHQkE4LCB3aWR0
aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNr
aW5nRnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIxNkxpdHRsZTog
ewotICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxl
bWVudHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90
Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUjE2TGl0dGxlVG9SR0JBOCwgcGFj
a2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRo
LCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVu
c2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1Bl
clJvdzx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mUjE2TGl0
dGxlVG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0
aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VG
b3JtYXRSMTZCaWc6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4
ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1l
dGVyczx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVs
ZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNr
aW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1IxNkJpZ1Rv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwor
ICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNl
RWxlbWVudHNQZXJSb3c8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQp
OworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RU
eXBlPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tPbmVS
b3dPZlIxNkJpZ1RvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBk
ZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4
ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U291cmNlRm9ybWF0UkE4OiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAgICAgY29tcHV0ZUluY3JlbWVudFBh
cmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrUkE4VG9S
R0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRh
KSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQ
ZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAg
ICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVs
ZW1lbnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOwor
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhfdCwgdWludDhfdCwgRGVzdFR5cGU+
KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZS
QThUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRp
b25EYXRhLCByb3dQYWNraW5nRnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZv
cm1hdFJBMTZMaXR0bGU6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFy
YW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJj
ZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja1JBMTZM
aXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihz
b3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNl
RWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBp
eGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0
ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQxNl90Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxp
Z25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVpbnQxNl90LCB1aW50OF90
LCBEZXN0VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgdW5w
YWNrT25lUm93T2ZSQTE2TGl0dGxlVG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxl
bWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTb3VyY2VGb3JtYXRSQTE2QmlnOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBz
b3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAgICAgY29t
cHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdpZHRoLCA0LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cp
OwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RU
eXBlLCB1bnBhY2tSQTE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVy
UGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9u
RWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1Bl
clJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50MTZfdD4od2lkdGgsIDQsIHNv
dXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50
MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291
cmNlRGF0YSksIHVucGFja09uZVJvd09mUkExNkJpZ1RvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNv
dXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0
aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QVI4OiB7Ci0gICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAg
ICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDhfdD4od2lkdGgsIDIsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50OF90LCB1aW50OF90LCBE
ZXN0VHlwZSwgdW5wYWNrQVI4VG9SR0JBOCwgcGFja2luZ0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVy
Um93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQ4X3Q+KHdpZHRoLCAyLCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDhf
dCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VE
YXRhKSwgdW5wYWNrT25lUm93T2ZBUjhUb1JHQkE4LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVt
ZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5nRnVuYywgZGVzdGluYXRpb25F
bGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEFSMTZMaXR0bGU6IHsKLSAgICAgICAgdW5zaWduZWQg
aW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAg
ICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVu
cGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1Bl
clJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwg
RGVzdFR5cGUsIHVucGFja0FSMTZMaXR0bGVUb1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVz
dGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PHVpbnQxNl90Pih3aWR0
aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPHVpbnQxNl90LCB1aW50OF90LCBEZXN0VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2
X3QqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZBUjE2TGl0dGxlVG9SR0JBOCwgd2lkdGgs
IGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93UGFja2lu
Z0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRBUjE2QmlnOiB7Ci0g
ICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdzsKLSAgICAgICAgY29tcHV0ZUluY3JlbWVudFBhcmFtZXRlcnM8dWludDE2X3Q+KHdp
ZHRoLCA0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3VyY2VFbGVtZW50c1BlclBpeGVsLCAm
c291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWlu
dDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBUjE2QmlnVG9SR0JBOCwgcGFja2luZ0Z1
bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWln
aHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5h
dGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVk
IGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1
aW50MTZfdD4od2lkdGgsIDQsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAgIGRvVW5w
YWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQVIxNkJpZ1RvUkdC
QTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlvbkRhdGEs
IHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291cmNlRm9ybWF0QTg6
IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczx1aW50OF90
Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5n
PHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlLCB1bnBhY2tBOFRvUkdCQTgsIHBhY2tpbmdGdW5j
PihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0aW5hdGlv
bkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2lnbmVkIGlu
dCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJvdzx1aW50
OF90Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tp
bmdBbmRQYWNraW5nPHVpbnQ4X3QsIHVpbnQ4X3QsIERlc3RUeXBlPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQThUb1JHQkE4LCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5n
RnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdEExNkxpdHRsZTogewot
ICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPHVpbnQxNl90Pih3
aWR0aCwgMiwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwg
JnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPHVp
bnQxNl90LCB1aW50OF90LCBEZXN0VHlwZSwgdW5wYWNrQTE2TGl0dGxlVG9SR0JBOCwgcGFja2lu
Z0Z1bmM+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHdpZHRoLCBo
ZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CisgICAgICAgIHVuc2ln
bmVkIGludCBzb3VyY2VFbGVtZW50c1BlclJvdyA9IGNvbXB1dGVTb3VyY2VFbGVtZW50c1BlclJv
dzx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCk7CisgICAgICAgIGRv
VW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGU+KHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQxNl90Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mQTE2TGl0dGxl
VG9SR0JBOCwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9u
RGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3Jt
YXRBMTZCaWc6IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
IHNvdXJjZUVsZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVy
czx1aW50MTZfdD4od2lkdGgsIDIsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1l
bnRzUGVyUGl4ZWwsICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5n
QW5kUGFja2luZzx1aW50MTZfdCwgdWludDhfdCwgRGVzdFR5cGUsIHVucGFja0ExNkJpZ1RvUkdC
QTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEp
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1Bl
clJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAg
ICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxl
bWVudHNQZXJSb3c8dWludDE2X3Q+KHdpZHRoLCAyLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOwor
ICAgICAgICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIHVpbnQ4X3QsIERlc3RUeXBl
PihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURhdGEpLCB1bnBhY2tPbmVSb3dP
ZkExNkJpZ1RvUkdCQTgsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTExNjMsNTIgKzEzNjQs
NDYgQEAgc3RhdGljIHZvaWQgZG9QYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZQogLy8gZG9lcyBu
b3QgbmVlZCB0byBiZSBhcyBnZW5lcmFsIGFzIGRvUGFja2luZywgYWJvdmU7IGJlY2F1c2UgdGhl
cmUgYXJlCiAvLyBjdXJyZW50bHkgbm8gbmF0aXZlIGZsb2F0aW5nLXBvaW50IGltYWdlIGZvcm1h
dHMgaW4gV2ViS2l0LCB0aGVyZSBhcmUgb25seSBhCiAvLyBmZXcgdXBsb2FkIHBhdGhzLgotdGVt
cGxhdGU8dm9pZCBwYWNraW5nRnVuYyhjb25zdCBmbG9hdCosIGZsb2F0Kik+CiBzdGF0aWMgdm9p
ZCBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZURhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRh
Rm9ybWF0IHNvdXJjZURhdGFGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZVVucGFja0FsaWdubWVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uRGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCByb3dQYWNraW5nRnVuYyhjb25zdCBmbG9hdCosIGZs
b2F0KiwgdW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbCkKIHsKICAgICBzd2l0Y2gg
KHNvdXJjZURhdGFGb3JtYXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTb3VyY2VG
b3JtYXRSR0JBODogewotICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQaXhl
bCwgc291cmNlRWxlbWVudHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0
ZXJzPGZsb2F0Pih3aWR0aCwgNCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxlbWVu
dHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgQVNTRVJUKCFzb3Vy
Y2VFbGVtZW50c1BlclJvdyk7IC8vIEd1YXJhbnRlZWQgYmVjYXVzZSBlYWNoIGNvbG9yIGNoYW5u
ZWwgaXMgc2l6ZW9mKGZsb2F0KSBieXRlcy4KKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVs
ZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PGZsb2F0Pih3aWR0aCwg
NCwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKICAgICAgICAgY29uc3QgZmxvYXQqIHNvdXJjZSA9
IHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSk7Ci0gICAgICAgIHVuc2lnbmVk
IGludCBudW1FbGVtZW50cyA9IHdpZHRoICogaGVpZ2h0ICogNDsKLSAgICAgICAgY29uc3QgZmxv
YXQqIGVuZFBvaW50ZXIgPSBzb3VyY2UgKyBudW1FbGVtZW50czsKKyAgICAgICAgY29uc3QgZmxv
YXQqIGVuZFBvaW50ZXIgPSBzb3VyY2UgKyBoZWlnaHQgKiBzb3VyY2VFbGVtZW50c1BlclJvdzsK
KyAgICAgICAgdW5zaWduZWQgaW50IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJSb3cgPSB3aWR0aCAq
IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsKICAgICAgICAgd2hpbGUgKHNvdXJjZSA8IGVu
ZFBvaW50ZXIpIHsKLSAgICAgICAgICAgIHBhY2tpbmdGdW5jKHNvdXJjZSwgZGVzdGluYXRpb25E
YXRhKTsKLSAgICAgICAgICAgIHNvdXJjZSArPSBzb3VyY2VFbGVtZW50c1BlclBpeGVsOwotICAg
ICAgICAgICAgZGVzdGluYXRpb25EYXRhICs9IGRlc3RpbmF0aW9uRWxlbWVudHNQZXJQaXhlbDsK
KyAgICAgICAgICAgIHJvd1BhY2tpbmdGdW5jKHNvdXJjZSwgZGVzdGluYXRpb25EYXRhLCB3aWR0
aCk7CisgICAgICAgICAgICBzb3VyY2UgKz0gc291cmNlRWxlbWVudHNQZXJSb3c7CisgICAgICAg
ICAgICBkZXN0aW5hdGlvbkRhdGEgKz0gZGVzdGluYXRpb25FbGVtZW50c1BlclJvdzsKICAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U291cmNlRm9ybWF0UkdCMzJGOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VFbGVtZW50
c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdzsKLSAgICAgICAgY29tcHV0ZUluY3JlbWVu
dFBhcmFtZXRlcnM8ZmxvYXQ+KHdpZHRoLCAzLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsICZzb3Vy
Y2VFbGVtZW50c1BlclBpeGVsLCAmc291cmNlRWxlbWVudHNQZXJSb3cpOwotICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdCwgdW5wYWNrUkdCMzJGVG9SR0JB
MzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwg
d2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJS
b3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAg
ICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1l
bnRzUGVyUm93PGZsb2F0Pih3aWR0aCwgMywgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAg
ICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQ+KHN0YXRpY19jYXN0
PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09mUkdCMzJGVG9SR0JBMzJG
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBy
b3dQYWNraW5nRnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNvdXJjZUZvcm1hdFIzMkY6
IHsKLSAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUGl4ZWwsIHNvdXJjZUVs
ZW1lbnRzUGVyUm93OwotICAgICAgICBjb21wdXRlSW5jcmVtZW50UGFyYW1ldGVyczxmbG9hdD4o
d2lkdGgsIDEsIHNvdXJjZVVucGFja0FsaWdubWVudCwgJnNvdXJjZUVsZW1lbnRzUGVyUGl4ZWws
ICZzb3VyY2VFbGVtZW50c1BlclJvdyk7Ci0gICAgICAgIGRvVW5wYWNraW5nQW5kUGFja2luZzxm
bG9hdCwgZmxvYXQsIGZsb2F0LCB1bnBhY2tSMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3Rh
dGljX2Nhc3Q8Y29uc3QgZmxvYXQqPihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNl
RWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwg
ZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJj
ZUVsZW1lbnRzUGVyUm93ID0gY29tcHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PGZsb2F0Pih3aWR0
aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNr
aW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQ+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNl
RGF0YSksIHVucGFja09uZVJvd09mUjMyRlRvUkdCQTMyRiwgd2lkdGgsIGhlaWdodCwgc291cmNl
RWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgcm93UGFja2luZ0Z1bmMsIGRlc3RpbmF0
aW9uRWxlbWVudHNQZXJQaXhlbCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpTb3VyY2VGb3JtYXRSQTMyRjogewotICAgICAgICB1bnNpZ25lZCBp
bnQgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7Ci0gICAgICAg
IGNvbXB1dGVJbmNyZW1lbnRQYXJhbWV0ZXJzPGZsb2F0Pih3aWR0aCwgMiwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCAmc291cmNlRWxlbWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93
KTsKLSAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVu
cGFja1JBMzJGVG9SR0JBMzJGLCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgZmxvYXQq
Pihzb3VyY2VEYXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291
cmNlRWxlbWVudHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1Bl
clBpeGVsKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZUVsZW1lbnRzUGVyUm93ID0gY29t
cHV0ZVNvdXJjZUVsZW1lbnRzUGVyUm93PGZsb2F0Pih3aWR0aCwgMiwgc291cmNlVW5wYWNrQWxp
Z25tZW50KTsKKyAgICAgICAgZG9VbnBhY2tpbmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxv
YXQ+KHN0YXRpY19jYXN0PGNvbnN0IGZsb2F0Kj4oc291cmNlRGF0YSksIHVucGFja09uZVJvd09m
UkEzMkZUb1JHQkEzMkYsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZUVsZW1lbnRzUGVyUm93LCBkZXN0
aW5hdGlvbkRhdGEsIHJvd1BhY2tpbmdGdW5jLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U291
cmNlRm9ybWF0QTMyRjogewotICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJQ
aXhlbCwgc291cmNlRWxlbWVudHNQZXJSb3c7Ci0gICAgICAgIGNvbXB1dGVJbmNyZW1lbnRQYXJh
bWV0ZXJzPGZsb2F0Pih3aWR0aCwgMSwgc291cmNlVW5wYWNrQWxpZ25tZW50LCAmc291cmNlRWxl
bWVudHNQZXJQaXhlbCwgJnNvdXJjZUVsZW1lbnRzUGVyUm93KTsKLSAgICAgICAgZG9VbnBhY2tp
bmdBbmRQYWNraW5nPGZsb2F0LCBmbG9hdCwgZmxvYXQsIHVucGFja0EzMkZUb1JHQkEzMkYsIHBh
Y2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCBmbG9hdCo+KHNvdXJjZURhdGEpLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVz
dGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOworICAgICAgICB1bnNp
Z25lZCBpbnQgc291cmNlRWxlbWVudHNQZXJSb3cgPSBjb21wdXRlU291cmNlRWxlbWVudHNQZXJS
b3c8ZmxvYXQ+KHdpZHRoLCAxLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQpOworICAgICAgICBkb1Vu
cGFja2luZ0FuZFBhY2tpbmc8ZmxvYXQsIGZsb2F0LCBmbG9hdD4oc3RhdGljX2Nhc3Q8Y29uc3Qg
ZmxvYXQqPihzb3VyY2VEYXRhKSwgdW5wYWNrT25lUm93T2ZBMzJGVG9SR0JBMzJGLCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCByb3dQYWNraW5n
RnVuYywgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGRlZmF1bHQ6CkBAIC0xMjM4LDEzICsxNDMzLDEzIEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QKICAgICAgICAgY2FzZSBSR0I6CiAgICAgICAgICAgICBz
d2l0Y2ggKGFscGhhT3ApIHsKICAgICAgICAgICAgIGNhc2UgQWxwaGFEb05vdGhpbmc6Ci0gICAg
ICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3QsIHBhY2tSR0JBOFRvUkdCOD4oc291cmNlRGF0
YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCBkZXN0aW5hdGlvbiwgMyk7CisgICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3Q+KHNv
dXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4LCAzKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5Ogot
ICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90LCBwYWNrUkdCQThUb1JHQjhQcmVtdWx0
aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMyk7CisgICAgICAgICAgICAgICAgZG9QYWNr
aW5nPHVpbnQ4X3Q+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkE4VG9S
R0I4UHJlbXVsdGlwbHksIDMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBBbHBoYURvVW5tdWx0aXBseToKLSAgICAgICAgICAgICAgICBkb1BhY2tpbmc8dWludDhf
dCwgcGFja1JHQkE4VG9SR0I4VW5tdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMyk7
CisgICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3Q+KHNvdXJjZURhdGEsIHNvdXJjZURh
dGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRp
b24sIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0I4VW5tdWx0aXBseSwgMyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyNTIsMTMg
KzE0NDcsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyhjb25zdAogICAg
ICAgICAgICAgc3dpdGNoIChhbHBoYU9wKSB7CiAgICAgICAgICAgICBjYXNlIEFscGhhRG9Ob3Ro
aW5nOgogICAgICAgICAgICAgICAgIEFTU0VSVChzb3VyY2VEYXRhRm9ybWF0ICE9IFNvdXJjZUZv
cm1hdFJHQkE4IHx8IHNvdXJjZVVucGFja0FsaWdubWVudCA+IDQpOyAvLyBIYW5kbGVkIGFib3Zl
IHdpdGggZmFzdCBjYXNlLgotICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90LCBwYWNr
UkdCQThUb1JHQkE4Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCA0KTsKKyAgICAgICAgICAgICAg
ICBkb1BhY2tpbmc8dWludDhfdD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09m
UkdCQThUb1JHQkE4LCA0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQWxwaGFEb1ByZW11bHRpcGx5OgotICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90
LCBwYWNrUkdCQThUb1JHQkE4UHJlbXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDQp
OworICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90Pihzb3VyY2VEYXRhLCBzb3VyY2VE
YXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0
aW9uLCBwYWNrT25lUm93T2ZSR0JBOFRvUkdCQThQcmVtdWx0aXBseSwgNCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFscGhhRG9Vbm11bHRpcGx5OgotICAgICAg
ICAgICAgICAgIGRvUGFja2luZzx1aW50OF90LCBwYWNrUkdCQThUb1JHQkE4VW5tdWx0aXBseT4o
c291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNr
QWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgNCk7CisgICAgICAgICAgICAgICAgZG9QYWNraW5nPHVp
bnQ4X3Q+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJj
ZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkE4VG9SR0JBOFVu
bXVsdGlwbHksIDQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEyNjgsNyArMTQ2
Myw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QKICAgICAgICAg
ICAgIC8vIEZyb20gdGhlIGRlc2t0b3AgT3BlbkdMIGNvbnZlcnNpb24gcnVsZXMgKE9wZW5HTCAy
LjEKICAgICAgICAgICAgIC8vIHNwZWNpZmljYXRpb24sIFRhYmxlIDMuMTUpLCB0aGUgYWxwaGEg
Y2hhbm5lbCBpcyBjaG9zZW4KICAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KLSAg
ICAgICAgICAgIGRvUGFja2luZzx1aW50OF90LCBwYWNrUkdCQThUb0E4Pihzb3VyY2VEYXRhLCBz
b3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRl
c3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90Pihzb3VyY2VEYXRh
LCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQs
IGRlc3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBOFRvQTgsIDEpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgTFVNSU5BTkNFOgogICAgICAgICAgICAgLy8gRnJvbSB0aGUgZGVz
a3RvcCBPcGVuR0wgY29udmVyc2lvbiBydWxlcyAoT3BlbkdMIDIuMQpAQCAtMTI3NiwxMyArMTQ3
MSwxMyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrUGl4ZWxzKGNvbnN0CiAgICAgICAg
ICAgICAvLyBmcm9tIHRoZSBSR0JBIGRhdGEuCiAgICAgICAgICAgICBzd2l0Y2ggKGFscGhhT3Ap
IHsKICAgICAgICAgICAgIGNhc2UgQWxwaGFEb05vdGhpbmc6Ci0gICAgICAgICAgICAgICAgZG9Q
YWNraW5nPHVpbnQ4X3QsIHBhY2tSR0JBOFRvUjg+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDEp
OworICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50OF90Pihzb3VyY2VEYXRhLCBzb3VyY2VE
YXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0
aW9uLCBwYWNrT25lUm93T2ZSR0JBOFRvUjgsIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6Ci0gICAgICAgICAgICAgICAgZG9Q
YWNraW5nPHVpbnQ4X3QsIHBhY2tSR0JBOFRvUjhQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291
cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0
aW5hdGlvbiwgMSk7CisgICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3Q+KHNvdXJjZURh
dGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVu
dCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkE4VG9SOFByZW11bHRpcGx5LCAxKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQWxwaGFEb1VubXVsdGlwbHk6
Ci0gICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3QsIHBhY2tSR0JBOFRvUjhVbm11bHRp
cGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgICAgICBkb1BhY2tp
bmc8dWludDhfdD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
c291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1I4
VW5tdWx0aXBseSwgMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEyOTIsMTMgKzE0ODcsMTMgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6cGFja1BpeGVscyhjb25zdAogICAgICAgICAgICAgLy8gYXJlIGNob3NlbiBmcm9t
IHRoZSBSR0JBIGRhdGEuCiAgICAgICAgICAgICBzd2l0Y2ggKGFscGhhT3ApIHsKICAgICAgICAg
ICAgIGNhc2UgQWxwaGFEb05vdGhpbmc6Ci0gICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4
X3QsIHBhY2tSR0JBOFRvUkE4Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAyKTsKKyAgICAgICAg
ICAgICAgICBkb1BhY2tpbmc8dWludDhfdD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09u
ZVJvd09mUkdCQThUb1JBOCwgMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKLSAgICAgICAgICAgICAgICBkb1BhY2tpbmc8dWlu
dDhfdCwgcGFja1JHQkE4VG9SQThQcmVtdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwg
Mik7CisgICAgICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQ4X3Q+KHNvdXJjZURhdGEsIHNvdXJj
ZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGlu
YXRpb24sIHBhY2tPbmVSb3dPZlJHQkE4VG9SQThQcmVtdWx0aXBseSwgMik7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEFscGhhRG9Vbm11bHRpcGx5OgotICAgICAg
ICAgICAgICAgIGRvUGFja2luZzx1aW50OF90LCBwYWNrUkdCQThUb1JBOFVubXVsdGlwbHk+KHNv
dXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0Fs
aWdubWVudCwgZGVzdGluYXRpb24sIDIpOworICAgICAgICAgICAgICAgIGRvUGFja2luZzx1aW50
OF90Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBOFRvUkE4VW5tdWx0
aXBseSwgMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTEzMDksMTMgKzE1MDQsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6cGFja1BpeGVscyhjb25zdAogICAgICAgICB1aW50MTZfdCogZGVzdGluYXRpb24gPSBzdGF0
aWNfY2FzdDx1aW50MTZfdCo+KGRlc3RpbmF0aW9uRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoYWxw
aGFPcCkgewogICAgICAgICBjYXNlIEFscGhhRG9Ob3RoaW5nOgotICAgICAgICAgICAgZG9QYWNr
aW5nPHVpbnQxNl90LCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0Pihzb3VyY2VEYXRhLCBz
b3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRl
c3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdD4oc291cmNlRGF0
YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0LCAxKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKLSAg
ICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdCwgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0NDQ0
NFByZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRv
UGFja2luZzx1aW50MTZfdD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdC
QThUb1Vuc2lnbmVkU2hvcnQ0NDQ0UHJlbXVsdGlwbHksIDEpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQWxwaGFEb1VubXVsdGlwbHk6Ci0gICAgICAgICAgICBkb1BhY2tpbmc8
dWludDE2X3QsIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDQ0NDRVbm11bHRpcGx5Pihzb3VyY2VE
YXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1l
bnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdD4oc291
cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxp
Z25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ0NDQ0
VW5tdWx0aXBseSwgMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKQEAgLTEzMjQsMTMgKzE1MTksMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFj
a1BpeGVscyhjb25zdAogICAgICAgICB1aW50MTZfdCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2Fz
dDx1aW50MTZfdCo+KGRlc3RpbmF0aW9uRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkg
ewogICAgICAgICBjYXNlIEFscGhhRG9Ob3RoaW5nOgotICAgICAgICAgICAgZG9QYWNraW5nPHVp
bnQxNl90LCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxPihzb3VyY2VEYXRhLCBzb3VyY2VE
YXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0
aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdD4oc291cmNlRGF0YSwgc291
cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0
aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxLCAxKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKLSAgICAgICAg
ICAgIGRvUGFja2luZzx1aW50MTZfdCwgcGFja1JHQkE4VG9VbnNpZ25lZFNob3J0NTU1MVByZW11
bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2lu
Zzx1aW50MTZfdD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
c291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vu
c2lnbmVkU2hvcnQ1NTUxUHJlbXVsdGlwbHksIDEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQWxwaGFEb1VubXVsdGlwbHk6Ci0gICAgICAgICAgICBkb1BhY2tpbmc8dWludDE2
X3QsIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDU1NTFVbm11bHRpcGx5Pihzb3VyY2VEYXRhLCBz
b3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRl
c3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdD4oc291cmNlRGF0
YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50
LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NTUxVW5tdWx0
aXBseSwgMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
QEAgLTEzMzksMTMgKzE1MzQsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVs
cyhjb25zdAogICAgICAgICB1aW50MTZfdCogZGVzdGluYXRpb24gPSBzdGF0aWNfY2FzdDx1aW50
MTZfdCo+KGRlc3RpbmF0aW9uRGF0YSk7CiAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgewogICAg
ICAgICBjYXNlIEFscGhhRG9Ob3RoaW5nOgotICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQxNl90
LCBwYWNrUkdCQThUb1Vuc2lnbmVkU2hvcnQ1NjU+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDEp
OworICAgICAgICAgICAgZG9QYWNraW5nPHVpbnQxNl90Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRh
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9u
LCBwYWNrT25lUm93T2ZSR0JBOFRvVW5zaWduZWRTaG9ydDU2NSwgMSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlwbHk6Ci0gICAgICAgICAgICBkb1Bh
Y2tpbmc8dWludDE2X3QsIHBhY2tSR0JBOFRvVW5zaWduZWRTaG9ydDU2NVByZW11bHRpcGx5Pihz
b3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tB
bGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZf
dD4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5w
YWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQThUb1Vuc2lnbmVkU2hv
cnQ1NjVQcmVtdWx0aXBseSwgMSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
bHBoYURvVW5tdWx0aXBseToKLSAgICAgICAgICAgIGRvUGFja2luZzx1aW50MTZfdCwgcGFja1JH
QkE4VG9VbnNpZ25lZFNob3J0NTY1VW5tdWx0aXBseT4oc291cmNlRGF0YSwgc291cmNlRGF0YUZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwg
MSk7CisgICAgICAgICAgICBkb1BhY2tpbmc8dWludDE2X3Q+KHNvdXJjZURhdGEsIHNvdXJjZURh
dGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRp
b24sIHBhY2tPbmVSb3dPZlJHQkE4VG9VbnNpZ25lZFNob3J0NTY1VW5tdWx0aXBseSwgMSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTEzNzgsMTAg
KzE1NzMsMTAgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cGFja1BpeGVscyhjb25zdAogICAg
ICAgICBjYXNlIFJHQjoKICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgewogICAgICAgICAg
ICAgY2FzZSBBbHBoYURvTm90aGluZzoKLSAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQ
YWNraW5nPHBhY2tSR0JBMzJGVG9SR0IzMkY+KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIDMpOwor
ICAgICAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmcoc291cmNlRGF0YSwgc291cmNl
RGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5h
dGlvbiwgcGFja09uZVJvd09mUkdCQTMyRlRvUkdCMzJGLCAzKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgQWxwaGFEb1ByZW11bHRpcGx5OgotICAgICAgICAgICAg
ICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmc8cGFja1JHQkEzMkZUb1JHQjMyRlByZW11bHRpcGx5
Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAzKTsKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5n
UG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQs
IHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZU
b1JHQjMyRlByZW11bHRpcGx5LCAzKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0x
MzkwLDEzICsxNTg1LDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMoY29u
c3QKICAgICAgICAgY2FzZSBSR0JBOgogICAgICAgICAgICAgLy8gQWxwaGFEb05vdGhpbmcgaXMg
aGFuZGxlZCBhYm92ZSB3aXRoIGZhc3QgcGF0aC4KICAgICAgICAgICAgIEFTU0VSVChhbHBoYU9w
ID09IEFscGhhRG9QcmVtdWx0aXBseSk7Ci0gICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNr
aW5nPHBhY2tSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHk+KHNvdXJjZURhdGEsIHNvdXJjZURh
dGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRp
b24sIDQpOworICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZyhzb3VyY2VEYXRhLCBz
b3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRl
c3RpbmF0aW9uLCBwYWNrT25lUm93T2ZSR0JBMzJGVG9SR0JBMzJGUHJlbXVsdGlwbHksIDQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQUxQSEE6CiAgICAgICAgICAgICAvLyBG
cm9tIHRoZSBkZXNrdG9wIE9wZW5HTCBjb252ZXJzaW9uIHJ1bGVzIChPcGVuR0wgMi4xCiAgICAg
ICAgICAgICAvLyBzcGVjaWZpY2F0aW9uLCBUYWJsZSAzLjE1KSwgdGhlIGFscGhhIGNoYW5uZWwg
aXMgY2hvc2VuCiAgICAgICAgICAgICAvLyBmcm9tIHRoZSBSR0JBIGRhdGEuCi0gICAgICAgICAg
ICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9BMzJGPihzb3VyY2VEYXRhLCBz
b3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRl
c3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgIGRvRmxvYXRpbmdQb2ludFBhY2tpbmcoc291cmNl
RGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc291cmNlVW5wYWNrQWxpZ25t
ZW50LCBkZXN0aW5hdGlvbiwgcGFja09uZVJvd09mUkdCQTMyRlRvQTMyRiwgMSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBMVU1JTkFOQ0U6CiAgICAgICAgICAgICAvLyBGcm9t
IHRoZSBkZXNrdG9wIE9wZW5HTCBjb252ZXJzaW9uIHJ1bGVzIChPcGVuR0wgMi4xCkBAIC0xNDA0
LDEwICsxNTk5LDEwIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tQaXhlbHMoY29uc3QK
ICAgICAgICAgICAgIC8vIGZyb20gdGhlIFJHQkEgZGF0YS4KICAgICAgICAgICAgIHN3aXRjaCAo
YWxwaGFPcCkgewogICAgICAgICAgICAgY2FzZSBBbHBoYURvTm90aGluZzoKLSAgICAgICAgICAg
ICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SMzJGPihzb3VyY2VEYXRh
LCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQs
IGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5n
KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1IzMkYsIDEpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBBbHBoYURvUHJlbXVsdGlw
bHk6Ci0gICAgICAgICAgICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZzxwYWNrUkdCQTMyRlRv
UjMyRlByZW11bHRpcGx5Pihzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCAxKTsKKyAgICAgICAgICAg
ICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nKHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFja0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tP
bmVSb3dPZlJHQkEzMkZUb1IzMkZQcmVtdWx0aXBseSwgMSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTQxOSwxMCArMTYxNCwxMCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpw
YWNrUGl4ZWxzKGNvbnN0CiAgICAgICAgICAgICAvLyBhcmUgY2hvc2VuIGZyb20gdGhlIFJHQkEg
ZGF0YS4KICAgICAgICAgICAgIHN3aXRjaCAoYWxwaGFPcCkgewogICAgICAgICAgICAgY2FzZSBB
bHBoYURvTm90aGluZzoKLSAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5nPHBh
Y2tSR0JBMzJGVG9SQTMyRj4oc291cmNlRGF0YSwgc291cmNlRGF0YUZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCBkZXN0aW5hdGlvbiwgMik7CisgICAgICAgICAg
ICAgICAgZG9GbG9hdGluZ1BvaW50UGFja2luZyhzb3VyY2VEYXRhLCBzb3VyY2VEYXRhRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIGRlc3RpbmF0aW9uLCBwYWNr
T25lUm93T2ZSR0JBMzJGVG9SQTMyRiwgMik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIEFscGhhRG9QcmVtdWx0aXBseToKLSAgICAgICAgICAgICAgICBkb0Zsb2F0
aW5nUG9pbnRQYWNraW5nPHBhY2tSR0JBMzJGVG9SQTMyRlByZW11bHRpcGx5Pihzb3VyY2VEYXRh
LCBzb3VyY2VEYXRhRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQs
IGRlc3RpbmF0aW9uLCAyKTsKKyAgICAgICAgICAgICAgICBkb0Zsb2F0aW5nUG9pbnRQYWNraW5n
KHNvdXJjZURhdGEsIHNvdXJjZURhdGFGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHNvdXJjZVVucGFj
a0FsaWdubWVudCwgZGVzdGluYXRpb24sIHBhY2tPbmVSb3dPZlJHQkEzMkZUb1JBMzJGUHJlbXVs
dGlwbHksIDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
</data>
<flag name="review"
          id="83180"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="83181"
          type_id="3"
          status="-"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>