<?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>114657</bug_id>
          
          <creation_ts>2013-04-15 19:49:16 -0700</creation_ts>
          <short_desc>Remove more traces of the now-obsolete support for V8</short_desc>
          <delta_ts>2013-04-16 02:28:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>876227</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-15 19:49:16 -0700</bug_when>
    <thetext>Remove more traces of the now-obsolete support for V8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876232</commentid>
    <comment_count>1</comment_count>
      <attachid>198225</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-15 19:51:15 -0700</bug_when>
    <thetext>Created attachment 198225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876233</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-15 19:52:00 -0700</bug_when>
    <thetext>Unflagging for now; I just want to see the EWS results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876237</commentid>
    <comment_count>3</comment_count>
      <attachid>198226</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-15 19:59:00 -0700</bug_when>
    <thetext>Created attachment 198226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876238</commentid>
    <comment_count>4</comment_count>
      <attachid>198226</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-15 19:59:30 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Less build breakage this time. Unflagging again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876242</commentid>
    <comment_count>5</comment_count>
      <attachid>198226</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-15 20:18:35 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/101085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876244</commentid>
    <comment_count>6</comment_count>
      <attachid>198226</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-15 20:25:05 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass qt-wk2-ews (qt):
Output: http://webkit-queues.appspot.com/results/136031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876246</commentid>
    <comment_count>7</comment_count>
      <attachid>198226</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 20:36:28 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/168005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876250</commentid>
    <comment_count>8</comment_count>
      <attachid>198226</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-04-15 20:37:57 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/13080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876258</commentid>
    <comment_count>9</comment_count>
      <attachid>198226</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-15 20:54:48 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/155159</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876359</commentid>
    <comment_count>10</comment_count>
      <attachid>198226</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-04-15 23:46:02 -0700</bug_when>
    <thetext>Comment on attachment 198226
Patch

Attachment 198226 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/11028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876381</commentid>
    <comment_count>11</comment_count>
      <attachid>198273</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-16 01:13:47 -0700</bug_when>
    <thetext>Created attachment 198273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876392</commentid>
    <comment_count>12</comment_count>
      <attachid>198273</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-16 01:29:06 -0700</bug_when>
    <thetext>Comment on attachment 198273
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876393</commentid>
    <comment_count>13</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-16 01:33:48 -0700</bug_when>
    <thetext>Waiting for EWS before I land (not sure what it will take to un-hose it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876420</commentid>
    <comment_count>14</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-04-16 02:28:14 -0700</bug_when>
    <thetext>Committed r148505: &lt;http://trac.webkit.org/changeset/148505&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198225</attachid>
            <date>2013-04-15 19:51:15 -0700</date>
            <delta_ts>2013-04-15 19:58:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114657-20130415195049.patch</filename>
            <type>text/plain</type>
            <size>29248</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTA0LTE1ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgdHJhY2Vz
IG9mIHRoZSBub3ctb2Jzb2xldGUgc3VwcG9ydCBmb3IgVjgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDY1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmUgVXNl
KFY4KSBib2NrLgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAoQ3VzdG9t
RXZlbnQpOiBkaXR0bworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KTogZGl0dG8KKyAgICAgICAgKiBk
b20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6IGRpdHRvCisgICAgICAgICogZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbDoKKyAgICAgICAgKGdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBSZW1vdmUg
Vjggc3VwcG9ydC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDogUmVtb3ZlIGdvYnMgb2Yg
Vjggc3VwcG9ydCBhbmQgc2ltcGxpZnkuCisgICAgICAgIChwcmludEpTRWxlbWVudEluY2x1ZGVz
KTogCisgICAgICAgIChwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKToKKyAgICAgICAg
KHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRnVuY3Rpb25zKToK
KyAgICAgICAgKHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKToKKyAgICAgICAgKHByaW50V3Jh
cHBlckZhY3RvcnlIZWFkZXJGaWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGVTb3VyY2UuanM6IFJlbW92ZSBWOCBzdGFjaworICAgICAgICB0cmFjZSBj
b2RlLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oOiBSZW1vdmUgYSBt
YWNybyBvbmx5IHVzZWQgZm9yIFY4IAorICAgICAgICBiaW5kaW5ncy4KKyAgICAgICAgKiBzdmcv
U1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAoU1ZHWm9vbUFuZFBhbik6IFJlbW92ZSBtZW50aW9u
IG9mIFY4IGZyb20gY29tbWVudC4KKwogMjAxMy0wNC0xNSAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWOCBhdHRyaWJ0dWVzIGZyb20gSURMQXR0
cmlidXRlcy50eHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkocmV2aXNpb24g
MTQ4NDg1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksMTkgKzU5LDYgQEAgdm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50
KGNvbnN0IAogICAgIG1fZGV0YWlsID0gZGV0YWlsOwogfQogCi0jaWYgVVNFKFY4KQotdm9pZCBD
dXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9kZXRhaWwuaGFz
Tm9WYWx1ZSgpKTsKLSAgICBpZiAoZGlzcGF0Y2hlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKLQotICAgIG1fc2VyaWFs
aXplZFNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlOwotfQotI2VuZGlmIC8vIFVT
RShWOCkKLQogY29uc3QgQXRvbWljU3RyaW5nJiBDdXN0b21FdmVudDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JDdXN0b21FdmVu
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCShyZXZpc2lvbiAxNDg0ODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSAr
NTMsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgZGV0YWlsKTsKLSNpZiBVU0UoVjgpCi0gICAgdm9pZCBpbml0Q3VzdG9t
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ4NDg1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDEwICs3Myw2IEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2UKICAg
ICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fcG9ydHMocG9ydHMpCiB7Ci0jaWYgVVNFKFY4
KQotICAgIGlmIChtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgbV9kYXRh
QXNTZXJpYWxpemVkU2NyaXB0VmFsdWUtPnJlZ2lzdGVyTWVtb3J5QWxsb2NhdGVkV2l0aEN1cnJl
bnRTY3JpcHRDb250ZXh0KCk7Ci0jZW5kaWYKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKQEAgLTEzOCwxMSAr
MTM0LDYgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29ucwogICAgIG1f
bGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZDsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKICAgICBt
X3BvcnRzID0gcG9ydHM7Ci0KLSNpZiBVU0UoVjgpCi0gICAgaWYgKG1fZGF0YUFzU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKQotICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+cmVn
aXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKLSNlbmRpZgog
fQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRp
bmcgc3VwcG9ydC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTQ4NDg1KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDExICszODgsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNFdmVudFRhcmdldERhdGEoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcpOyB9CiAgICAgdm9pZCBzZXRIYXNFdmVudFRhcmdl
dERhdGEoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyk7
IH0KIAotI2lmIFVTRShWOCkKLSAgICBib29sIGlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0Mo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyk7
IH0KLSAgICB2b2lkIHNldFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKGJvb2wgZmxhZykgeyBz
ZXRGbGFnKGZsYWcsIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyk7IH0KLSNlbmRpZgot
CiAgICAgZW51bSBTaG91bGRTZXRBdHRhY2hlZCB7CiAgICAgICAgIFNldEF0dGFjaGVkLAogICAg
ICAgICBEb05vdFNldEF0dGFjaGVkCkBAIC03MjgsOSArNzIzLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzQ3VzdG9tU3R5bGVDYWxsYmFja3NGbGFnID0gMSA8PCAyMSwKICAgICAgICAgSGFzU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyMiwKICAgICAgICAgSGFzRXZlbnRUYXJnZXRE
YXRhRmxhZyA9IDEgPDwgMjMsCi0jaWYgVVNFKFY4KQotICAgICAgICBWOENvbGxlY3RhYmxlRHVy
aW5nTWlub3JHQ0ZsYWcgPSAxIDw8IDI0LAotI2VuZGlmCiAgICAgICAgIE5lZWRzU2hhZG93VHJl
ZVdhbGtlckZsYWcgPSAxIDw8IDI1LAogICAgICAgICBJc0luU2hhZG93VHJlZUZsYWcgPSAxIDw8
IDI2LAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJl
dmlzaW9uIDE0ODQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3Rvcnku
cGwJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDYgQEAgc3ViIGdlbmVyYXRlSW1wbGVtZW50
YXRpb24oKQogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9RmFjdG9yeS5oXCJc
biI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3Bh
Y2V9SGVhZGVycy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2lmIFVTRShWOClcbiI7Ci0gICAgcHJp
bnQgRiAiI2luY2x1ZGUgXCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmhcIlxuIjsKLSAgICBwcmlu
dCBGICIjZW5kaWZcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIm5hbWVzcGFj
ZSBXZWJDb3JlIHtcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwpAQCAtMTAxLDE2ICs5OCw5IEBAIHN1
YiBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkKICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
SW5Db21waWxlci0+aW50ZXJmYWNlRm9ySXRlbSgkZXZlbnROYW1lKTsKIAogICAgICAgICBwcmlu
dCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwotICAgICAg
ICBpZiAoJHJ1bnRpbWVDb25kaXRpb25hbCkgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgICNp
ZiBVU0UoVjgpXG4iOwotICAgICAgICAgICAgcHJpbnQgRiAiICAgIC8vIEZJWE1FOiBKU0Mgc2hv
dWxkIHN1cHBvcnQgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyB3ZWxsLlxuIjsKLSAgICAgICAg
ICAgIHByaW50IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIiAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjokcnVudGltZUNvbmRpdGlvbmFsKCkpXG4iOwotICAgICAgICAgICAgcHJp
bnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCk7XG4iOwotICAg
ICAgICAgICAgcHJpbnQgRiAiICAgICNlbHNlXG4iOwotICAgICAgICB9CisgICAgICAgICMgRklY
RU1FIEpTQyBzaG91bGQgc3VwcG9ydCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCiAgICAgICAgIHBy
aW50IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CiAgICAgICAgIHByaW50
IEYgIiAgICAgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xuIjsKLSAgICAg
ICAgcHJpbnQgRiAiI2VuZGlmIC8vIFVTRShWOClcbiIgaWYgJHJ1bnRpbWVDb25kaXRpb25hbDsK
ICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNDg0ODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBA
QCBzdWIgcmVhZEF0dHJzKCQkKTsKIAogbXkgJHByaW50RmFjdG9yeSA9IDA7IAogbXkgJHByaW50
V3JhcHBlckZhY3RvcnkgPSAwOyAKLW15ICRwcmludFdyYXBwZXJGYWN0b3J5VjggPSAwOyAKIG15
ICRmb250TmFtZXNJbiA9ICIiOwogbXkgJHRhZ3NGaWxlID0gIiI7CiBteSAkYXR0cnNGaWxlID0g
IiI7CkBAIC04MSw3ICs4MCw2IEBAIEdldE9wdGlvbnMoCiAgICAgJ2V4dHJhRGVmaW5lcz1zJyA9
PiBcJGV4dHJhRGVmaW5lcywKICAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29y
LAogICAgICd3cmFwcGVyRmFjdG9yeScgPT4gXCRwcmludFdyYXBwZXJGYWN0b3J5LAotICAgICd3
cmFwcGVyRmFjdG9yeVY4JyA9PiBcJHByaW50V3JhcHBlckZhY3RvcnlWOCwKICAgICAnZm9udHM9
cycgPT4gXCRmb250TmFtZXNJbgogKTsKIApAQCAtMTY4LDE3ICsxNjYsOSBAQCBpZiAoJHByaW50
RmFjdG9yeSkgewogICAgIHByaW50RmFjdG9yeUhlYWRlckZpbGUoIiRmYWN0b3J5QmFzZVBhdGgu
aCIpOwogfQogCi1kaWUgIllvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIC0td3JhcHBlckZhY3Rvcnkg
YW5kIC0td3JhcHBlckZhY3RvcnlWOCIgaWYgJHByaW50V3JhcHBlckZhY3RvcnkgJiYgJHByaW50
V3JhcHBlckZhY3RvcnlWODsKLW15ICR3cmFwcGVyRmFjdG9yeVR5cGUgPSAiIjsKIGlmICgkcHJp
bnRXcmFwcGVyRmFjdG9yeSkgewotICAgICR3cmFwcGVyRmFjdG9yeVR5cGUgPSAiSlMiOwotfSBl
bHNpZiAoJHByaW50V3JhcHBlckZhY3RvcnlWOCkgewotICAgICR3cmFwcGVyRmFjdG9yeVR5cGUg
PSAiVjgiOwotfQotCi1pZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSkgewotICAgIHByaW50V3JhcHBl
ckZhY3RvcnlDcHBGaWxlKCRvdXRwdXREaXIsICR3cmFwcGVyRmFjdG9yeVR5cGUsICR3cmFwcGVy
RmFjdG9yeUZpbGVOYW1lKTsKLSAgICBwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSgkb3V0
cHV0RGlyLCAkd3JhcHBlckZhY3RvcnlUeXBlLCAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSk7Cisg
ICAgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUoJG91dHB1dERpciwgJHdyYXBwZXJGYWN0b3J5
RmlsZU5hbWUpOworICAgIHByaW50V3JhcHBlckZhY3RvcnlIZWFkZXJGaWxlKCRvdXRwdXREaXIs
ICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lKTsKIH0KIAogIyMjIEhhc2ggaW5pdGlhbGl6YXRpb24K
QEAgLTcyOCw3ICs3MTgsNiBAQCBzdWIgcHJpbnROYW1lc0NwcEZpbGUKIHN1YiBwcmludEpTRWxl
bWVudEluY2x1ZGVzCiB7CiAgICAgbXkgJEYgPSBzaGlmdDsKLSAgICBteSAkd3JhcHBlckZhY3Rv
cnlUeXBlID0gc2hpZnQ7CiAKICAgICBteSAldGFnc1NlZW47CiAgICAgZm9yIG15ICR0YWdOYW1l
IChzb3J0IGtleXMgJWVuYWJsZWRUYWdzKSB7CkBAIC03NDAsOSArNzI5LDkgQEAgc3ViIHByaW50
SlNFbGVtZW50SW5jbHVkZXMKICAgICAgICAgfQogICAgICAgICAkdGFnc1NlZW57JEpTSW50ZXJm
YWNlTmFtZX0gPSAxOwogCi0gICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHt3cmFwcGVyRmFj
dG9yeVR5cGV9JHtKU0ludGVyZmFjZU5hbWV9LmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJKUyR7SlNJbnRlcmZhY2VOYW1lfS5oXCJcbiI7CiAgICAgfQotICAgIHByaW50IEYg
IiNpbmNsdWRlIFwiJHt3cmFwcGVyRmFjdG9yeVR5cGV9JHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRl
cmZhY2VOYW1lfS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRwYXJhbWV0ZXJz
e2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0uaFwiXG4iOwogfQogCiBzdWIgcHJpbnRFbGVtZW50SW5j
bHVkZXMKQEAgLTc2Niw3ICs3NTUsNyBAQCBzdWIgcHJpbnRFbGVtZW50SW5jbHVkZXMKIAogc3Vi
IHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMKIHsKLSAgICBteSAoJEYsICR3cmFwcGVy
RmFjdG9yeVR5cGUpID0gQF87CisgICAgbXkgKCRGLCAkd3JhcHBlckluY2x1ZGVzKSA9IEBfOwog
CiAgICAgbXkgJWNvbmRpdGlvbmFsczsKICAgICBteSAldW5jb25kaXRpb25hbEVsZW1lbnRJbmNs
dWRlczsKQEAgLTc5MiwxMCArNzgxLDEwIEBAIHN1YiBwcmludENvbmRpdGlvbmFsRWxlbWVudElu
Y2x1ZGVzCiAgICAgICAgICAgICBuZXh0IGlmICR1bmNvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVz
eyRpbnRlcmZhY2VOYW1lfTsKICAgICAgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJGludGVy
ZmFjZU5hbWUuaFwiXG4iOwogICAgICAgICB9Ci0gICAgICAgIGlmICgkd3JhcHBlckZhY3RvcnlU
eXBlKSB7CisgICAgICAgIGlmICgkd3JhcHBlckluY2x1ZGVzKSB7CiAgICAgICAgICAgICBmb3Ig
bXkgJEpTSW50ZXJmYWNlTmFtZSAoc29ydCBrZXlzICV7JGNvbmRpdGlvbmFsc3skY29uZGl0aW9u
YWx9e0pTSW50ZXJmYWNlTmFtZXN9fSkgewogICAgICAgICAgICAgICAgIG5leHQgaWYgJHVuY29u
ZGl0aW9uYWxKU0VsZW1lbnRJbmNsdWRlc3skSlNJbnRlcmZhY2VOYW1lfTsKLSAgICAgICAgICAg
ICAgICBwcmludCBGICIjaW5jbHVkZSBcIiR3cmFwcGVyRmFjdG9yeVR5cGUkSlNJbnRlcmZhY2VO
YW1lLmhcIlxuIjsKKyAgICAgICAgICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIkpTJEpTSW50
ZXJmYWNlTmFtZS5oXCJcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcHJp
bnQgRiAiI2VuZGlmXG4iOwpAQCAtODQ5LDcgKzgzOCw3IEBAIHByaW50RWxlbWVudEluY2x1ZGVz
KCRGKTsKIAogcHJpbnQgRiAiXG4jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD5cbiI7CiAKLXByaW50
Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMoJEYpOworcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJ
bmNsdWRlcygkRiwgdHJ1ZSk7CiAKIHByaW50IEYgPDxFTkQKIApAQCAtMTAzOSw3ICsxMDI4LDYg
QEAgc3ViIHVzZXNEZWZhdWx0SlNXcmFwcGVyCiBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCiB7
CiAgICAgbXkgJEYgPSBzaGlmdDsKLSAgICBteSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7
CiAKICAgICBteSAldGFnc1NlZW47CiAgICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJWVu
YWJsZWRUYWdzKSB7CkBAIC0xMDU0LDExICsxMDQyLDEwIEBAIHN1YiBwcmludFdyYXBwZXJGdW5j
dGlvbnMKICAgICAgICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4i
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIkpTIikg
ewotICAgICAgICAgICAgIyBIYWNrIGZvciB0aGUgbWVkaWEgdGFncwotICAgICAgICAgICAgIyBG
SVhNRTogVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgdmlhIGEgQ3VzdG9tV3JhcHBlciBhdHRy
aWJ1dGUgYW5kIGEgc2VwYXJhdGUgKkN1c3RvbSBmaWxlLgotICAgICAgICAgICAgaWYgKCRlbmFi
bGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7Ci0gICAg
ICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICAjIEhhY2sgZm9yIHRoZSBtZWRpYSB0
YWdzCisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkb25lIHZpYSBhIEN1
c3RvbVdyYXBwZXIgYXR0cmlidXRlIGFuZCBhIHNlcGFyYXRlICpDdXN0b20gZmlsZS4KKyAgICAg
ICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFi
bGV9KSB7CisgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBj
cmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudD4gZWxlbWVudCkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LT5k
b2N1bWVudCgpLT5zZXR0aW5ncygpOwpAQCAtMTA2OCwxMCArMTA1NSwxMCBAQCBzdGF0aWMgSlNE
T01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlCiB9CiAKIEVORAotOwotICAgICAgICAgICAg
fSBlbHNpZiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9KSB7Ci0g
ICAgICAgICAgICAgICAgbXkgJGNvbnRleHRDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFn
TmFtZX17Y29udGV4dENvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5E
CisgICAgOworICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnRleHRD
b25kaXRpb25hbH0pIHsKKyAgICAgICAgICAgIG15ICRjb250ZXh0Q29uZGl0aW9uYWwgPSAkZW5h
YmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnRleHRDb25kaXRpb25hbH07CisgICAgICAgICAgICBwcmlu
dCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1X
cmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKIHsKICAg
ICBpZiAoIUNvbnRleHRGZWF0dXJlczo6JHtjb250ZXh0Q29uZGl0aW9uYWx9RW5hYmxlZChlbGVt
ZW50LT5kb2N1bWVudCgpKSkgewpAQCAtMTA4MiwxMCArMTA2OSwxMCBAQCBzdGF0aWMgSlNET01X
cmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlCiAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBF
UihleGVjLCBnbG9iYWxPYmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwgZWxlbWVudC5nZXQoKSk7
CiB9CiBFTkQKLTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17
cnVudGltZUNvbmRpdGlvbmFsfSkgewotICAgICAgICAgICAgICAgIG15ICRydW50aW1lQ29uZGl0
aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07Ci0gICAg
ICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgIDsKKyAgICAgICAgfSBlbHNpZiAoJGVuYWJs
ZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9KSB7CisgICAgICAgICAgICBteSAk
cnVudGltZUNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0
aW9uYWx9OworICAgICAgICAgICAgcHJpbnQgRiA8PEVORAogc3RhdGljIEpTRE9NV3JhcHBlciog
Y3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+IGVsZW1lbnQpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjok
e3J1bnRpbWVDb25kaXRpb25hbH1FbmFibGVkKCkpIHsKQEAgLTEwOTYsNzMgKzEwODMsMTYgQEAg
c3RhdGljIEpTRE9NV3JhcHBlciogY3JlYXRlJHtKU0ludGVyZmFjZQogICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAke0pTSW50ZXJmYWNlTmFtZX0sIGVs
ZW1lbnQuZ2V0KCkpOwogfQogRU5ECi07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKKyAgICA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBwcmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNl
TmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkK
IHsKICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHtK
U0ludGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKIH0KIAogRU5ECi07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAg
ICAgICAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNB
dmFpbGFibGV9KSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIFNldHRpbmdzKiBz
ZXR0aW5ncyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0gICAgaWYgKCFNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKSB8fCAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5tZWRpYUVu
YWJsZWQoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1E
aXJlY3RXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgcmV0
dXJuIHdyYXAoc3RhdGljX2Nhc3Q8JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0
aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0KLUVORAotOwotICAgICAgICAgICAgfSBlbHNpZiAo
JGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9KSB7Ci0gICAgICAgICAg
ICAgICAgbXkgJGNvbnRleHRDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17Y29u
dGV4dENvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgaWYgKCFD
b250ZXh0RmVhdHVyZXM6OiR7Y29udGV4dENvbmRpdGlvbmFsfUVuYWJsZWQoZWxlbWVudC0+ZG9j
dW1lbnQoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1G
YWxsYmFja1dyYXBwZXIodG8kcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1l
bnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIHJldHVybiB3cmFwKHN0YXRpY19j
YXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwotfQotRU5ECi07Ci0gICAgICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05h
bWV9e3J1bnRpbWVDb25kaXRpb25hbH0pIHsKLSAgICAgICAgICAgICAgICBteSAkcnVudGltZUNv
bmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9Owot
ICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhbGxiYWNrV3JhcHBlcih0byRwYXJhbWV0ZXJze2Zh
bGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
Ci0gICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVu
dCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci1FTkQKLTsKLSAgICAgICAgICAgIH0g
ZWxzaWYgKCR7SlNJbnRlcmZhY2VOYW1lfSBlcSAiSFRNTEVsZW1lbnQiKSB7Ci0gICAgICAgICAg
ICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRl
JHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCog
ZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci19Ci0KLUVORAotOwotICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8
JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
Ci19Ci0KLQotRU5ECi07Ci0gICAgICAgICAgICB9CisgICAgOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCRjb25kaXRpb25hbCkgewpAQCAtMTE3NCwxOSArMTEwNCwxOCBAQCBFTkQKIHN1YiBw
cmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogewogICAgIG15ICRvdXRwdXREaXIgPSBzaGlmdDsK
LSAgICBteSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7CiAgICAgbXkgJHdyYXBwZXJGYWN0
b3J5RmlsZU5hbWUgPSBzaGlmdDsKICAgICBteSAkRjsKLSAgICBvcGVuIEYsICI+IiAuICRvdXRw
dXREaXIgLiAiLyIgLiAkd3JhcHBlckZhY3RvcnlUeXBlIC4gJHdyYXBwZXJGYWN0b3J5RmlsZU5h
bWUgLiAiLmNwcCI7CisgICAgb3BlbiBGLCAiPiIgLiAkb3V0cHV0RGlyIC4gIi9KUyIgLiAkd3Jh
cHBlckZhY3RvcnlGaWxlTmFtZSAuICIuY3BwIjsKIAogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAKICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQg
RiAiI2luY2x1ZGUgXCIkd3JhcHBlckZhY3RvcnlUeXBlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnRXcmFwcGVyRmFjdG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkuaFwiXG4iOwogCiAgICAg
cHJpbnQgRiAiXG4jaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFy
YW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAotICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMo
JEYsICR3cmFwcGVyRmFjdG9yeVR5cGUpOworICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYp
OwogCiAgICAgcHJpbnQgRiAiXG4jaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1l
cy5oXCJcblxuIjsKIApAQCAtMTE5NCw3ICsxMTIzLDcgQEAgc3ViIHByaW50V3JhcHBlckZhY3Rv
cnlDcHBGaWxlCiAKICAgICBwcmludCBGICJcbiNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
XG4iOwogCi0gICAgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgJHdyYXBwZXJG
YWN0b3J5VHlwZSk7CisgICAgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgZmFs
c2UpOwogCiAgICAgcHJpbnQgRiA8PEVORAogCkBAIC0xMjA5LDIzICsxMTM4LDEwIEBAIHN1YiBw
cmludFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogRU5ECiA7CiAKLSAgICBpZiAoJHdyYXBwZXJGYWN0
b3J5VHlwZSBlcSAiSlMiKSB7ICAgIAotICAgICAgICBwcmludCBGIDw8RU5ECisgICAgcHJpbnQg
RiA8PEVORAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIEVORAogOwotICAgIH0gZWxzaWYgKCR3cmFw
cGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAgICAgICBwcmludCBGIDw8RU5ECi0jaW5jbHVk
ZSAiVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudC5oIgotCi0jaWYgRU5BQkxFKENVU1RP
TV9FTEVNRU5UUykKLSNpbmNsdWRlICJDdXN0b21FbGVtZW50SGVscGVycy5oIgotI2VuZGlmCi0K
LSNpbmNsdWRlIDx2OC5oPgotRU5ECi07Ci0gICAgfQogCiAgICAgcHJpbnQgRiA8PEVORAogCkBA
IC0xMjM1LDI0ICsxMTUxLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9TmEKIAogRU5ECiA7Ci0gICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIkpTIikgewot
ICAgICAgICBwcmludCBGIDw8RU5ECitwcmludCBGIDw8RU5ECiB0eXBlZGVmIEpTRE9NV3JhcHBl
ciogKCpDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbiko
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50Pik7CiAKIEVORAogOwotICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9y
eVR5cGUgZXEgIlY4IikgewotICAgICAgICBwcmludCBGIDw8RU5ECi10eXBlZGVmIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gKCpDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBw
ZXJGdW5jdGlvbikoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKLQotRU5ECi07Ci0gICAg
fQogCi0gICAgcHJpbnRXcmFwcGVyRnVuY3Rpb25zKCRGLCAkd3JhcHBlckZhY3RvcnlUeXBlKTsK
KyAgICBwcmludFdyYXBwZXJGdW5jdGlvbnMoJEYpOwogCi0gICAgaWYgKCR3cmFwcGVyRmFjdG9y
eVR5cGUgZXEgIkpTIikgewotICAgICAgICBwcmludCBGIDw8RU5ECitwcmludCBGIDw8RU5ECiBK
U0RPTVdyYXBwZXIqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoRXhlY1N0
YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIHR5cGVkZWYgSGFz
aE1hcDxXVEY6OkF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
RWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gRnVuY3Rpb25NYXA7CkBAIC0xMjYwLDE2ICsxMTY3LDYg
QEAgSlNET01XcmFwcGVyKiBjcmVhdGVKUyRwYXJhbWV0ZXJze25hbWVzcAogICAgIGlmIChtYXAu
aXNFbXB0eSgpKSB7CiBFTkQKIDsKLSAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVx
ICJWOCIpIHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFdURjo6QXRv
bWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9u
TWFwLCBtYXAsICgpKTsKLSAgICBpZiAobWFwLmlzRW1wdHkoKSkgewotRU5ECi07Ci0gICAgfQog
CiAgICAgZm9yIG15ICR0YWcgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKICAgICAgICAgIyBE
byBub3QgYWRkIHRoZSBuYW1lIHRvIHRoZSBtYXAgaWYgaXQgZG9lcyBub3QgaGF2ZSBhIEpTIHdy
YXBwZXIgY29uc3RydWN0b3Igb3IgdXNlcyB0aGUgZGVmYXVsdCB3cmFwcGVyLgpAQCAtMTI5Myw5
OCArMTE5MCwyMiBAQCBFTkQKICAgICB9CiBFTkQKIDsKLSAgICBpZiAoJHdyYXBwZXJGYWN0b3J5
VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLSNpZiBFTkFCTEUoQ1VTVE9N
X0VMRU1FTlRTKQotICAgIGlmIChQYXNzUmVmUHRyPEN1c3RvbUVsZW1lbnRDb25zdHJ1Y3Rvcj4g
Y29uc3RydWN0b3IgPSBDdXN0b21FbGVtZW50SGVscGVyczo6Y29uc3RydWN0b3JPZihlbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnRIZWxwZXJzOjp3cmFwKGVsZW1lbnQsIGNy
ZWF0aW9uQ29udGV4dCwgY29uc3RydWN0b3IsIGlzb2xhdGUpOwotI2VuZGlmCi1FTkQKLTsKLSAg
ICB9CiAKICAgICBwcmludCBGIDw8RU5ECiAgICAgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRlV3JhcHBlckZ1bmN0aW9uID0gbWFwLmdldChl
bGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgIGlmIChjcmVhdGVXcmFwcGVyRnVuY3Rp
b24pCiBFTkQKIDsKLSAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7Ci0gICAg
ICAgIHByaW50IEYgPDxFTkQKKyAgICBwcmludCBGIDw8RU5ECiAgICAgICAgIHJldHVybiBjcmVh
dGVXcmFwcGVyRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBlbGVtZW50KTsKICAgICByZXR1
cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFs
bGJhY2tJbnRlcmZhY2VOYW1lfSwgZWxlbWVudC5nZXQoKSk7CiBFTkQKIDsKLSAgICB9IGVsc2lm
ICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAot
ICAgIHsKLUVORAotOwotICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRN
TCIpIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICAgICAgaWYgKGNyZWF0ZVdyYXBw
ZXJGdW5jdGlvbiA9PSBjcmVhdGVIVE1MRWxlbWVudFdyYXBwZXIpCi0gICAgICAgICAgIHJldHVy
biBWOEhUTUxFbGVtZW50OjpjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7Ci1FTkQKLSAgICAgICAgfQotICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgICAg
IHJldHVybiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24oZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLSAgICB9Ci1FTkQKLTsKLSAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX0gZXEgIlNWRyIpIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICByZXR1cm4gVjhT
VkdFbGVtZW50OjpjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7Ci1FTkQKLTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxFTkQK
LSAgICByZXR1cm4gd3JhcCh0byRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxl
bWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci1FTkQKLTsKLSAgICAgICAgfQotICAg
IH0KICAgICBwcmludCBGIDw8RU5ECiB9CiBFTkQKIDsKIAotICAgIGlmICgkd3JhcHBlckZhY3Rv
cnlUeXBlIGVxICJWOCIpIHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAotCi1jb25zdCBRdWFsaWZp
ZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05hbWVPZlY4VHlwZShjb25zdCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUpCi17Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFdyYXBw
ZXJUeXBlSW5mbyosIGNvbnN0IFF1YWxpZmllZE5hbWUqPiBUeXBlTmFtZU1hcDsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFR5cGVOYW1lTWFwLCBtYXAsICgpKTsKLSAgICBpZiAobWFwLmlzRW1w
dHkoKSkgewotRU5ECi07Ci0KLSAgICAgICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJWVu
YWJsZWRUYWdzKSB7Ci0gICAgICAgICAgICBpZiAoIXVzZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWdO
YW1lKSkgewotICAgICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3sk
dGFnTmFtZX17Y29uZGl0aW9uYWx9OwotICAgICAgICAgICAgICAgIGlmICgkY29uZGl0aW9uYWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gIkVOQUJMRSgi
IC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYvLCAkY29uZGl0aW9uYWwpKSAuICIpIjsK
LSAgICAgICAgICAgICAgICAgICAgcHJpbnQgRiAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG15ICRKU0ludGVyZmFjZU5h
bWUgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e0pTSW50ZXJmYWNlTmFtZX07Ci0gICAgICAgICAg
ICAgICAgcHJpbnQgRiAiICAgICAgIG1hcC5zZXQoV3JhcHBlclR5cGVUcmFpdHM8JHtKU0ludGVy
ZmFjZU5hbWV9Pjo6aW5mbygpLCAmJHt0YWdOYW1lfVRhZyk7XG4iOwotCi0gICAgICAgICAgICAg
ICAgaWYgKCRjb25kaXRpb25hbCkgewotICAgICAgICAgICAgICAgICAgICBwcmludCBGICIjZW5k
aWZcbiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgcHJpbnQgRiA8PEVORAotICAgIH0KLQotICAgIHJldHVybiBtYXAuZ2V0KHR5cGUpOwot
fQotCi1FTkQKLTsKLSAgICB9Ci0KICAgICBwcmludCBGICJ9XG5cbiI7CiAgICAgcHJpbnQgRiAi
I2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCkBAIC0xMzk0LDIw
ICsxMjE1LDE4IEBAIEVORAogc3ViIHByaW50V3JhcHBlckZhY3RvcnlIZWFkZXJGaWxlCiB7CiAg
ICAgbXkgJG91dHB1dERpciA9IHNoaWZ0OwotICAgIG15ICR3cmFwcGVyRmFjdG9yeVR5cGUgPSBz
aGlmdDsKICAgICBteSAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSA9IHNoaWZ0OwogICAgIG15ICRG
OwotICAgIG9wZW4gRiwgIj4iIC4gJG91dHB1dERpciAuICIvIiAuICR3cmFwcGVyRmFjdG9yeVR5
cGUgLiAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSAuICIuaCI7CisgICAgb3BlbiBGLCAiPiIgLiAk
b3V0cHV0RGlyIC4gIi9KUyIgLiAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSAuICIuaCI7CiAKICAg
ICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwogCi0gICAgcHJpbnQgRiAiI2lmbmRlZiAkd3JhcHBl
ckZhY3RvcnlUeXBlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9o
XG4iOwotICAgIHByaW50IEYgIiNkZWZpbmUgJHdyYXBwZXJGYWN0b3J5VHlwZSRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuXG4iOworICAgIHByaW50IEYgIiNp
Zm5kZWYgSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hcbiI7
CisgICAgcHJpbnQgRiAiI2RlZmluZSBKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3Jh
cHBlckZhY3RvcnlfaFxuXG4iOwogCiAgICAgcHJpbnQgRiAiI2lmICRwYXJhbWV0ZXJze2d1YXJk
RmFjdG9yeVdpdGh9XG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCi0gICAg
aWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIkpTIikgewotICAgICAgICBwcmludCBGIDw8RU5E
CisgICAgcHJpbnQgRiA8PEVORAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTQyNSwzNSArMTI0NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAg
CiBFTkQKLTsKLSAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKLSAg
ICAgICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUgPFY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQuaD4KLSNpbmNsdWRlIDxWOCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0u
aD4KLSNpbmNsdWRlIDx2OC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSAgICBjbGFzcyAk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDsKLQotICAgIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJU
eXBlSW5mbyopOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjgkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCosIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwotICAgIGlu
bGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fURpcmVjdFdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
OjpjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAg
fQotICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUZhbGxiYWNrV3JhcHBlcigkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5h
bWV9KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gVjgkcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9OjpjcmVhdGVXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7Ci0gICAgfQotfQotRU5ECi07Ci0gICAgfQorICAgIDsKIAogICAgIHBy
aW50IEYgIiNlbmRpZiAvLyAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofVxuXG4iIGlmICRw
YXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9OwogCi0gICAgcHJpbnQgRiAiI2VuZGlmIC8vICR3
cmFwcGVyRmFjdG9yeVR5cGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0
b3J5X2hcbiI7CisgICAgcHJpbnQgRiAiI2VuZGlmIC8vIEpTJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG4iOwogCiAgICAgY2xvc2UgRjsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRD
YW52YXNNb2R1bGVTb3VyY2UuanMJKHJldmlzaW9uIDE0ODQ4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjA2LDY4ICsyMDYsMTIgQEAgU3RhY2tUcmFjZS5wcm90b3R5cGUgPSB7CiAgKi8K
IFN0YWNrVHJhY2UuY3JlYXRlID0gZnVuY3Rpb24oc3RhY2tUcmFjZUxpbWl0LCB0b3BNb3N0RnVu
Y3Rpb25Ub0lnbm9yZSkKIHsKLSAgICBpZiAodHlwZW9mIEVycm9yLmNhcHR1cmVTdGFja1RyYWNl
ID09PSAiZnVuY3Rpb24iKQotICAgICAgICByZXR1cm4gbmV3IFN0YWNrVHJhY2VWOChzdGFja1Ry
YWNlTGltaXQsIHRvcE1vc3RGdW5jdGlvblRvSWdub3JlIHx8IGFyZ3VtZW50cy5jYWxsZWUpOwog
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IEpTQywgYW5kIG1heWJlIG90aGVyIGJyb3dzZXJzLgogICAg
IHJldHVybiBudWxsOwogfQogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgotICogQGltcGxlbWVudHMg
e1N0YWNrVHJhY2V9Ci0gKiBAcGFyYW0ge251bWJlcj19IHN0YWNrVHJhY2VMaW1pdAotICogQHBh
cmFtIHtGdW5jdGlvbj19IHRvcE1vc3RGdW5jdGlvblRvSWdub3JlCi0gKiBAc2VlIGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC92OC93aWtpL0phdmFTY3JpcHRTdGFja1RyYWNlQXBpCi0gKi8KLWZ1
bmN0aW9uIFN0YWNrVHJhY2VWOChzdGFja1RyYWNlTGltaXQsIHRvcE1vc3RGdW5jdGlvblRvSWdu
b3JlKQotewotICAgIFN0YWNrVHJhY2UuY2FsbCh0aGlzKTsKLQotICAgIHZhciBvbGRQcmVwYXJl
U3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlOwotICAgIHZhciBvbGRTdGFja1Ry
YWNlTGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXQ7Ci0gICAgaWYgKHR5cGVvZiBzdGFja1Ry
YWNlTGltaXQgPT09ICJudW1iZXIiKQotICAgICAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBz
dGFja1RyYWNlTGltaXQ7Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVjdH0gZXJyb3IK
LSAgICAgKiBAcGFyYW0ge0FycmF5LjxDYWxsU2l0ZT59IHN0cnVjdHVyZWRTdGFja1RyYWNlCi0g
ICAgICogQHJldHVybiB7QXJyYXkuPHtzb3VyY2VVUkw6IHN0cmluZywgbGluZU51bWJlcjogbnVt
YmVyLCBjb2x1bW5OdW1iZXI6IG51bWJlcn0+fQotICAgICAqLwotICAgIEVycm9yLnByZXBhcmVT
dGFja1RyYWNlID0gZnVuY3Rpb24oZXJyb3IsIHN0cnVjdHVyZWRTdGFja1RyYWNlKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZWRTdGFja1RyYWNlLm1hcChmdW5jdGlvbihjYWxsU2l0
ZSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBzb3VyY2VVUkw6IGNh
bGxTaXRlLmdldEZpbGVOYW1lKCksCi0gICAgICAgICAgICAgICAgbGluZU51bWJlcjogY2FsbFNp
dGUuZ2V0TGluZU51bWJlcigpLAotICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogY2FsbFNp
dGUuZ2V0Q29sdW1uTnVtYmVyKCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIHZhciBob2xkZXIgPSAvKiogQHR5cGUge3tzdGFjazogQXJyYXkuPHtzb3VyY2VVUkw6
IHN0cmluZywgbGluZU51bWJlcjogbnVtYmVyLCBjb2x1bW5OdW1iZXI6IG51bWJlcn0+fX0gKi8g
KHt9KTsKLSAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShob2xkZXIsIHRvcE1vc3RGdW5jdGlv
blRvSWdub3JlIHx8IGFyZ3VtZW50cy5jYWxsZWUpOwotICAgIHRoaXMuX3N0YWNrVHJhY2UgPSBo
b2xkZXIuc3RhY2s7Ci0KLSAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBvbGRTdGFja1RyYWNl
TGltaXQ7Ci0gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBvbGRQcmVwYXJlU3RhY2tUcmFj
ZTsKLX0KLQotU3RhY2tUcmFjZVY4LnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAb3Zl
cnJpZGUKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgKLSAgICAgKiBAcmV0dXJuIHt7c291
cmNlVVJMOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciwgY29sdW1uTnVtYmVyOiBudW1iZXJ9
fHVuZGVmaW5lZH0KLSAgICAgKi8KLSAgICBjYWxsRnJhbWU6IGZ1bmN0aW9uKGluZGV4KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3N0YWNrVHJhY2VbaW5kZXhdOwotICAgIH0sCi0KLSAg
ICBfX3Byb3RvX186IFN0YWNrVHJhY2UucHJvdG90eXBlCi19Ci0KLS8qKgotICogQGNvbnN0cnVj
dG9yCiAgKi8KIGZ1bmN0aW9uIENhY2hlKCkKIHsKQEAgLTIyNzQsNyArMjIxOCw2IEBAIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRFJlc291cmNlLkF0dHJpYnUKICAgICAidGV4dEFsaWduIiwKICAg
ICAidGV4dEJhc2VsaW5lIiwKICAgICAibGluZURhc2hPZmZzZXQiLAotICAgIC8vIEZJWE1FOiBU
ZW1wb3JhcnkgcHJvcGVydGllcyBpbXBsZW1lbnRlZCBpbiBKU0MsIGJ1dCBub3QgaW4gVjguCiAg
ICAgIndlYmtpdExpbmVEYXNoIiwKICAgICAid2Via2l0TGluZURhc2hPZmZzZXQiCiBdOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0LmgJKHJldmlz
aW9uIDE0ODQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9y
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw1MSArMzEsNiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotLy8gVjggYmluZGluZ3Mg
dXNlIHRoZSBBUlJBWVNJWkVfVU5TQUZFIG1hY3JvLiBUaGlzIG1hY3JvIHdhcyBjb3BpZWQKLS8v
IGZyb20gaHR0cDovL3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZS90cnVuay9zcmMvYmFz
ZS9iYXNpY3R5cGVzLmgKLS8vCi0vLyBBUlJBWVNJWkVfVU5TQUZFIHBlcmZvcm1zIGVzc2VudGlh
bGx5IHRoZSBzYW1lIGNhbGN1bGF0aW9uIGFzIGFycmF5c2l6ZSwKLS8vIGJ1dCBjYW4gYmUgdXNl
ZCBvbiBhbm9ueW1vdXMgdHlwZXMgb3IgdHlwZXMgZGVmaW5lZCBpbnNpZGUKLS8vIGZ1bmN0aW9u
cy4gSXQncyBsZXNzIHNhZmUgdGhhbiBhcnJheXNpemUgYXMgaXQgYWNjZXB0cyBzb21lCi0vLyAo
YWx0aG91Z2ggbm90IGFsbCkgcG9pbnRlcnMuIFRoZXJlZm9yZSwgeW91IHNob3VsZCB1c2UgYXJy
YXlzaXplCi0vLyB3aGVuZXZlciBwb3NzaWJsZS4KLS8vCi0vLyBUaGUgZXhwcmVzc2lvbiBBUlJB
WVNJWkVfVU5TQUZFKGEpIGlzIGEgY29tcGlsZS10aW1lIGNvbnN0YW50IG9mIHR5cGUKLS8vIHNp
emVfdC4KLS8vCi0vLyBBUlJBWVNJWkVfVU5TQUZFIGNhdGNoZXMgYSBmZXcgdHlwZSBlcnJvcnMu
IElmIHlvdSBzZWUgYSBjb21waWxlciBlcnJvcgotLy8KLS8vICAgIndhcm5pbmc6IGRpdmlzaW9u
IGJ5IHplcm8gaW4gLi4uIgotLy8KLS8vIHdoZW4gdXNpbmcgQVJSQVlTSVpFX1VOU0FGRSwgeW91
IGFyZSAod3JvbmdmdWxseSkgZ2l2aW5nIGl0IGEgcG9pbnRlci4KLS8vIFlvdSBzaG91bGQgb25s
eSB1c2UgQVJSQVlTSVpFX1VOU0FGRSBvbiBzdGF0aWNhbGx5IGFsbG9jYXRlZCBhcnJheXMuCi0v
LwotLy8gVGhlIGZvbGxvd2luZyBjb21tZW50cyBhcmUgb24gdGhlIGltcGxlbWVudGF0aW9uIGRl
dGFpbHMsIGFuZCBjYW4KLS8vIGJlIGlnbm9yZWQgYnkgdGhlIHVzZXJzLgotLy8KLS8vIEFSUkFZ
U0laRV9VTlNBRkUoYXJyKSB3b3JrcyBieSBpbnNwZWN0aW5nIHNpemVvZihhcnIpICh0aGUgIyBv
ZiBieXRlcyBpbgotLy8gdGhlIGFycmF5KSBhbmQgc2l6ZW9mKCooYXJyKSkgKHRoZSAjIG9mIGJ5
dGVzIGluIG9uZSBhcnJheQotLy8gZWxlbWVudCkuIElmIHRoZSBmb3JtZXIgaXMgZGl2aXNpYmxl
IGJ5IHRoZSBsYXR0ZXIsIHBlcmhhcHMgYXJyIGlzCi0vLyBpbmRlZWQgYW4gYXJyYXksIGluIHdo
aWNoIGNhc2UgdGhlIGRpdmlzaW9uIHJlc3VsdCBpcyB0aGUgIyBvZgotLy8gZWxlbWVudHMgaW4g
dGhlIGFycmF5LiBPdGhlcndpc2UsIGFyciBjYW5ub3QgcG9zc2libHkgYmUgYW4gYXJyYXksCi0v
LyBhbmQgd2UgZ2VuZXJhdGUgYSBjb21waWxlciBlcnJvciB0byBwcmV2ZW50IHRoZSBjb2RlIGZy
b20KLS8vIGNvbXBpbGluZy4KLS8vCi0vLyBTaW5jZSB0aGUgc2l6ZSBvZiBib29sIGlzIGltcGxl
bWVudGF0aW9uLWRlZmluZWQsIHdlIG5lZWQgdG8gY2FzdAotLy8gIShzaXplb2YoYSkgJiBzaXpl
b2YoKihhKSkpIHRvIHNpemVfdCBpbiBvcmRlciB0byBlbnN1cmUgdGhlIGZpbmFsCi0vLyByZXN1
bHQgaGFzIHR5cGUgc2l6ZV90LgotLy8KLS8vIFRoaXMgbWFjcm8gaXMgbm90IHBlcmZlY3QgYXMg
aXQgd3JvbmdmdWxseSBhY2NlcHRzIGNlcnRhaW4KLS8vIHBvaW50ZXJzLCBuYW1lbHkgd2hlcmUg
dGhlIHBvaW50ZXIgc2l6ZSBpcyBkaXZpc2libGUgYnkgdGhlIHBvaW50ZWUKLS8vIHNpemUuIFNp
bmNlIGFsbCBvdXIgY29kZSBoYXMgdG8gZ28gdGhyb3VnaCBhIDMyLWJpdCBjb21waWxlciwKLS8v
IHdoZXJlIGEgcG9pbnRlciBpcyA0IGJ5dGVzLCB0aGlzIG1lYW5zIGFsbCBwb2ludGVycyB0byBh
IHR5cGUgd2hvc2UKLS8vIHNpemUgaXMgMyBvciBncmVhdGVyIHRoYW4gNCB3aWxsIGJlIChyaWdo
dGVvdXNseSkgcmVqZWN0ZWQuCi0KLSNkZWZpbmUgQVJSQVlTSVpFX1VOU0FGRShhKSBcCi0gICgo
c2l6ZW9mKGEpIC8gc2l6ZW9mKCooYSkpKSAvIFwKLSAgIHN0YXRpY19jYXN0PHNpemVfdD4oIShz
aXplb2YoYSkgJSBzaXplb2YoKihhKSkpKSkKLQotCiB0eXBlZGVmIHN0cnVjdCBOUE9iamVjdCBO
UE9iamVjdDsKIHR5cGVkZWYgc3RydWN0IF9OUFAgTlBQX3Q7CiB0eXBlZGVmIE5QUF90KiBOUFA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgJKHJldmlzaW9uIDE0ODQ4NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogCiAgICAgU1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbigp
IGNvbnN0IHsgcmV0dXJuIFNWR1pvb21BbmRQYW5Vbmtub3duOyB9CiAKLSAgICAvLyBUaGVzZSBt
ZXRob2RzIG9ubHkgZXhpc3QgdG8gYWxsb3cgdXMgdG8gY29tcGlsZSBWOC9KU1NWR1pvb21BbmRQ
YW4uKi4KKyAgICAvLyBUaGVzZSBtZXRob2RzIG9ubHkgZXhpc3QgdG8gYWxsb3cgdXMgdG8gY29t
cGlsZSBKU1NWR1pvb21BbmRQYW4uKi4KICAgICAvLyBUaGVzZSBhcmUgbmV2ZXIgY2FsbGVkLCBh
bmQgdGh1cyBBU1NFUlRfTk9UX1JFQUNIRUQuCiAgICAgdm9pZCByZWYoKTsKICAgICB2b2lkIGRl
cmVmKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198226</attachid>
            <date>2013-04-15 19:59:00 -0700</date>
            <delta_ts>2013-04-16 01:13:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114657-20130415195834.patch</filename>
            <type>text/plain</type>
            <size>29241</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODQ4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEzLTA0LTE1ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgdHJhY2Vz
IG9mIHRoZSBub3ctb2Jzb2xldGUgc3VwcG9ydCBmb3IgVjgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDY1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgICogZG9tL0N1c3RvbUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOiBSZW1vdmUgVXNl
KFY4KSBib2NrLgorICAgICAgICAqIGRvbS9DdXN0b21FdmVudC5oOgorICAgICAgICAoQ3VzdG9t
RXZlbnQpOiBkaXR0bworICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQpOiBkaXR0bworICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50KTogZGl0dG8KKyAgICAgICAgKiBk
b20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6IGRpdHRvCisgICAgICAgICogZG9tL21ha2VfZXZl
bnRfZmFjdG9yeS5wbDoKKyAgICAgICAgKGdlbmVyYXRlSW1wbGVtZW50YXRpb24pOiBSZW1vdmUg
Vjggc3VwcG9ydC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDogUmVtb3ZlIGdvYnMgb2Yg
Vjggc3VwcG9ydCBhbmQgc2ltcGxpZnkuCisgICAgICAgIChwcmludEpTRWxlbWVudEluY2x1ZGVz
KTogCisgICAgICAgIChwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKToKKyAgICAgICAg
KHByaW50RmFjdG9yeUNwcEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRnVuY3Rpb25zKToK
KyAgICAgICAgKHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlKToKKyAgICAgICAgKHByaW50V3Jh
cHBlckZhY3RvcnlIZWFkZXJGaWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRDYW52YXNNb2R1bGVTb3VyY2UuanM6IFJlbW92ZSBWOCBzdGFjaworICAgICAgICB0cmFjZSBj
b2RlLgorICAgICAgICAqIHBsYXRmb3JtL3F0L1BsYXRmb3JtU3VwcG9ydC5oOiBSZW1vdmUgYSBt
YWNybyBvbmx5IHVzZWQgZm9yIFY4IAorICAgICAgICBiaW5kaW5ncy4KKyAgICAgICAgKiBzdmcv
U1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAoU1ZHWm9vbUFuZFBhbik6IFJlbW92ZSBtZW50aW9u
IG9mIFY4IGZyb20gY29tbWVudC4KKwogMjAxMy0wNC0xNSAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWOCBhdHRyaWJ0dWVzIGZyb20gSURMQXR0
cmlidXRlcy50eHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkocmV2aXNpb24g
MTQ4NDg1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksMTkgKzU5LDYgQEAgdm9pZCBDdXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50
KGNvbnN0IAogICAgIG1fZGV0YWlsID0gZGV0YWlsOwogfQogCi0jaWYgVVNFKFY4KQotdm9pZCBD
dXN0b21FdmVudDo6aW5pdEN1c3RvbUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9v
bCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLXsKLSAgICBBU1NFUlQobV9kZXRhaWwuaGFz
Tm9WYWx1ZSgpKTsKLSAgICBpZiAoZGlzcGF0Y2hlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKTsKLQotICAgIG1fc2VyaWFs
aXplZFNjcmlwdFZhbHVlID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlOwotfQotI2VuZGlmIC8vIFVT
RShWOCkKLQogY29uc3QgQXRvbWljU3RyaW5nJiBDdXN0b21FdmVudDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JDdXN0b21FdmVu
dDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5oCShyZXZpc2lvbiAxNDg0ODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSAr
NTMsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBpbml0Q3VzdG9tRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25z
dCBTY3JpcHRWYWx1ZSYgZGV0YWlsKTsKLSNpZiBVU0UoVjgpCi0gICAgdm9pZCBpbml0Q3VzdG9t
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5j
ZWxhYmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwotI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAkocmV2aXNpb24gMTQ4NDg1KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDEwICs3Myw2IEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8U2UKICAg
ICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fcG9ydHMocG9ydHMpCiB7Ci0jaWYgVVNFKFY4
KQotICAgIGlmIChtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKLSAgICAgICAgbV9kYXRh
QXNTZXJpYWxpemVkU2NyaXB0VmFsdWUtPnJlZ2lzdGVyTWVtb3J5QWxsb2NhdGVkV2l0aEN1cnJl
bnRTY3JpcHRDb250ZXh0KCk7Ci0jZW5kaWYKIH0KIAogTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKQEAgLTEzOCwxMSAr
MTM0LDYgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29ucwogICAgIG1f
bGFzdEV2ZW50SWQgPSBsYXN0RXZlbnRJZDsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKICAgICBt
X3BvcnRzID0gcG9ydHM7Ci0KLSNpZiBVU0UoVjgpCi0gICAgaWYgKG1fZGF0YUFzU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKQotICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+cmVn
aXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKLSNlbmRpZgog
fQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRp
bmcgc3VwcG9ydC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTQ4NDg1KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzg4LDExICszODgsNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNFdmVudFRhcmdldERhdGEoKSBjb25zdCB7IHJldHVybiBnZXRG
bGFnKEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcpOyB9CiAgICAgdm9pZCBzZXRIYXNFdmVudFRhcmdl
dERhdGEoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgSGFzRXZlbnRUYXJnZXREYXRhRmxhZyk7
IH0KIAotI2lmIFVTRShWOCkKLSAgICBib29sIGlzVjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0Mo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyk7
IH0KLSAgICB2b2lkIHNldFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDKGJvb2wgZmxhZykgeyBz
ZXRGbGFnKGZsYWcsIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyk7IH0KLSNlbmRpZgot
CiAgICAgZW51bSBTaG91bGRTZXRBdHRhY2hlZCB7CiAgICAgICAgIFNldEF0dGFjaGVkLAogICAg
ICAgICBEb05vdFNldEF0dGFjaGVkCkBAIC03MjgsOSArNzIzLDYgQEAgcHJpdmF0ZToKICAgICAg
ICAgSGFzQ3VzdG9tU3R5bGVDYWxsYmFja3NGbGFnID0gMSA8PCAyMSwKICAgICAgICAgSGFzU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRGbGFnID0gMSA8PCAyMiwKICAgICAgICAgSGFzRXZlbnRUYXJnZXRE
YXRhRmxhZyA9IDEgPDwgMjMsCi0jaWYgVVNFKFY4KQotICAgICAgICBWOENvbGxlY3RhYmxlRHVy
aW5nTWlub3JHQ0ZsYWcgPSAxIDw8IDI0LAotI2VuZGlmCiAgICAgICAgIE5lZWRzU2hhZG93VHJl
ZVdhbGtlckZsYWcgPSAxIDw8IDI1LAogICAgICAgICBJc0luU2hhZG93VHJlZUZsYWcgPSAxIDw8
IDI2LAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwJKHJl
dmlzaW9uIDE0ODQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3Rvcnku
cGwJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDYgQEAgc3ViIGdlbmVyYXRlSW1wbGVtZW50
YXRpb24oKQogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3BhY2V9RmFjdG9yeS5oXCJc
biI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHtuYW1lc3Bh
Y2V9SGVhZGVycy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAiI2lmIFVTRShWOClcbiI7Ci0gICAgcHJp
bnQgRiAiI2luY2x1ZGUgXCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmhcIlxuIjsKLSAgICBwcmlu
dCBGICIjZW5kaWZcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIm5hbWVzcGFj
ZSBXZWJDb3JlIHtcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwpAQCAtMTAxLDE2ICs5OCw5IEBAIHN1
YiBnZW5lcmF0ZUltcGxlbWVudGF0aW9uKCkKICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAk
SW5Db21waWxlci0+aW50ZXJmYWNlRm9ySXRlbSgkZXZlbnROYW1lKTsKIAogICAgICAgICBwcmlu
dCBGICIjaWYgRU5BQkxFKCRjb25kaXRpb25hbClcbiIgaWYgJGNvbmRpdGlvbmFsOwotICAgICAg
ICBpZiAoJHJ1bnRpbWVDb25kaXRpb25hbCkgewotICAgICAgICAgICAgcHJpbnQgRiAiICAgICNp
ZiBVU0UoVjgpXG4iOwotICAgICAgICAgICAgcHJpbnQgRiAiICAgIC8vIEZJWE1FOiBKU0Mgc2hv
dWxkIHN1cHBvcnQgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyB3ZWxsLlxuIjsKLSAgICAgICAg
ICAgIHByaW50IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIiAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjokcnVudGltZUNvbmRpdGlvbmFsKCkpXG4iOwotICAgICAgICAgICAgcHJp
bnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRlcmZhY2VOYW1lfTo6Y3JlYXRlKCk7XG4iOwotICAg
ICAgICAgICAgcHJpbnQgRiAiICAgICNlbHNlXG4iOwotICAgICAgICB9CisgICAgICAgICMgRklY
RU1FIEpTQyBzaG91bGQgc3VwcG9ydCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCiAgICAgICAgIHBy
aW50IEYgIiAgICBpZiAodHlwZSA9PSBcIiRldmVudE5hbWVcIilcbiI7CiAgICAgICAgIHByaW50
IEYgIiAgICAgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSgpO1xuIjsKLSAgICAg
ICAgcHJpbnQgRiAiI2VuZGlmIC8vIFVTRShWOClcbiIgaWYgJHJ1bnRpbWVDb25kaXRpb25hbDsK
ICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRjb25kaXRpb25hbDsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNDg0ODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBA
QCBzdWIgcmVhZEF0dHJzKCQkKTsKIAogbXkgJHByaW50RmFjdG9yeSA9IDA7IAogbXkgJHByaW50
V3JhcHBlckZhY3RvcnkgPSAwOyAKLW15ICRwcmludFdyYXBwZXJGYWN0b3J5VjggPSAwOyAKIG15
ICRmb250TmFtZXNJbiA9ICIiOwogbXkgJHRhZ3NGaWxlID0gIiI7CiBteSAkYXR0cnNGaWxlID0g
IiI7CkBAIC04MSw3ICs4MCw2IEBAIEdldE9wdGlvbnMoCiAgICAgJ2V4dHJhRGVmaW5lcz1zJyA9
PiBcJGV4dHJhRGVmaW5lcywKICAgICAncHJlcHJvY2Vzc29yPXMnID0+IFwkcHJlcHJvY2Vzc29y
LAogICAgICd3cmFwcGVyRmFjdG9yeScgPT4gXCRwcmludFdyYXBwZXJGYWN0b3J5LAotICAgICd3
cmFwcGVyRmFjdG9yeVY4JyA9PiBcJHByaW50V3JhcHBlckZhY3RvcnlWOCwKICAgICAnZm9udHM9
cycgPT4gXCRmb250TmFtZXNJbgogKTsKIApAQCAtMTY4LDE3ICsxNjYsOSBAQCBpZiAoJHByaW50
RmFjdG9yeSkgewogICAgIHByaW50RmFjdG9yeUhlYWRlckZpbGUoIiRmYWN0b3J5QmFzZVBhdGgu
aCIpOwogfQogCi1kaWUgIllvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIC0td3JhcHBlckZhY3Rvcnkg
YW5kIC0td3JhcHBlckZhY3RvcnlWOCIgaWYgJHByaW50V3JhcHBlckZhY3RvcnkgJiYgJHByaW50
V3JhcHBlckZhY3RvcnlWODsKLW15ICR3cmFwcGVyRmFjdG9yeVR5cGUgPSAiIjsKIGlmICgkcHJp
bnRXcmFwcGVyRmFjdG9yeSkgewotICAgICR3cmFwcGVyRmFjdG9yeVR5cGUgPSAiSlMiOwotfSBl
bHNpZiAoJHByaW50V3JhcHBlckZhY3RvcnlWOCkgewotICAgICR3cmFwcGVyRmFjdG9yeVR5cGUg
PSAiVjgiOwotfQotCi1pZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSkgewotICAgIHByaW50V3JhcHBl
ckZhY3RvcnlDcHBGaWxlKCRvdXRwdXREaXIsICR3cmFwcGVyRmFjdG9yeVR5cGUsICR3cmFwcGVy
RmFjdG9yeUZpbGVOYW1lKTsKLSAgICBwcmludFdyYXBwZXJGYWN0b3J5SGVhZGVyRmlsZSgkb3V0
cHV0RGlyLCAkd3JhcHBlckZhY3RvcnlUeXBlLCAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSk7Cisg
ICAgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUoJG91dHB1dERpciwgJHdyYXBwZXJGYWN0b3J5
RmlsZU5hbWUpOworICAgIHByaW50V3JhcHBlckZhY3RvcnlIZWFkZXJGaWxlKCRvdXRwdXREaXIs
ICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lKTsKIH0KIAogIyMjIEhhc2ggaW5pdGlhbGl6YXRpb24K
QEAgLTcyOCw3ICs3MTgsNiBAQCBzdWIgcHJpbnROYW1lc0NwcEZpbGUKIHN1YiBwcmludEpTRWxl
bWVudEluY2x1ZGVzCiB7CiAgICAgbXkgJEYgPSBzaGlmdDsKLSAgICBteSAkd3JhcHBlckZhY3Rv
cnlUeXBlID0gc2hpZnQ7CiAKICAgICBteSAldGFnc1NlZW47CiAgICAgZm9yIG15ICR0YWdOYW1l
IChzb3J0IGtleXMgJWVuYWJsZWRUYWdzKSB7CkBAIC03NDAsOSArNzI5LDkgQEAgc3ViIHByaW50
SlNFbGVtZW50SW5jbHVkZXMKICAgICAgICAgfQogICAgICAgICAkdGFnc1NlZW57JEpTSW50ZXJm
YWNlTmFtZX0gPSAxOwogCi0gICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJHt3cmFwcGVyRmFj
dG9yeVR5cGV9JHtKU0ludGVyZmFjZU5hbWV9LmhcIlxuIjsKKyAgICAgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCJKUyR7SlNJbnRlcmZhY2VOYW1lfS5oXCJcbiI7CiAgICAgfQotICAgIHByaW50IEYg
IiNpbmNsdWRlIFwiJHt3cmFwcGVyRmFjdG9yeVR5cGV9JHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRl
cmZhY2VOYW1lfS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRwYXJhbWV0ZXJz
e2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0uaFwiXG4iOwogfQogCiBzdWIgcHJpbnRFbGVtZW50SW5j
bHVkZXMKQEAgLTc2Niw3ICs3NTUsNyBAQCBzdWIgcHJpbnRFbGVtZW50SW5jbHVkZXMKIAogc3Vi
IHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMKIHsKLSAgICBteSAoJEYsICR3cmFwcGVy
RmFjdG9yeVR5cGUpID0gQF87CisgICAgbXkgKCRGLCAkd3JhcHBlckluY2x1ZGVzKSA9IEBfOwog
CiAgICAgbXkgJWNvbmRpdGlvbmFsczsKICAgICBteSAldW5jb25kaXRpb25hbEVsZW1lbnRJbmNs
dWRlczsKQEAgLTc5MiwxMCArNzgxLDEwIEBAIHN1YiBwcmludENvbmRpdGlvbmFsRWxlbWVudElu
Y2x1ZGVzCiAgICAgICAgICAgICBuZXh0IGlmICR1bmNvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVz
eyRpbnRlcmZhY2VOYW1lfTsKICAgICAgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwiJGludGVy
ZmFjZU5hbWUuaFwiXG4iOwogICAgICAgICB9Ci0gICAgICAgIGlmICgkd3JhcHBlckZhY3RvcnlU
eXBlKSB7CisgICAgICAgIGlmICgkd3JhcHBlckluY2x1ZGVzKSB7CiAgICAgICAgICAgICBmb3Ig
bXkgJEpTSW50ZXJmYWNlTmFtZSAoc29ydCBrZXlzICV7JGNvbmRpdGlvbmFsc3skY29uZGl0aW9u
YWx9e0pTSW50ZXJmYWNlTmFtZXN9fSkgewogICAgICAgICAgICAgICAgIG5leHQgaWYgJHVuY29u
ZGl0aW9uYWxKU0VsZW1lbnRJbmNsdWRlc3skSlNJbnRlcmZhY2VOYW1lfTsKLSAgICAgICAgICAg
ICAgICBwcmludCBGICIjaW5jbHVkZSBcIiR3cmFwcGVyRmFjdG9yeVR5cGUkSlNJbnRlcmZhY2VO
YW1lLmhcIlxuIjsKKyAgICAgICAgICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIkpTJEpTSW50
ZXJmYWNlTmFtZS5oXCJcbiI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcHJp
bnQgRiAiI2VuZGlmXG4iOwpAQCAtODQ5LDcgKzgzOCw3IEBAIHByaW50RWxlbWVudEluY2x1ZGVz
KCRGKTsKIAogcHJpbnQgRiAiXG4jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD5cbiI7CiAKLXByaW50
Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMoJEYpOworcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJ
bmNsdWRlcygkRiwgMSk7CiAKIHByaW50IEYgPDxFTkQKIApAQCAtMTAzOSw3ICsxMDI4LDYgQEAg
c3ViIHVzZXNEZWZhdWx0SlNXcmFwcGVyCiBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCiB7CiAg
ICAgbXkgJEYgPSBzaGlmdDsKLSAgICBteSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7CiAK
ICAgICBteSAldGFnc1NlZW47CiAgICAgZm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJWVuYWJs
ZWRUYWdzKSB7CkBAIC0xMDU0LDExICsxMDQyLDEwIEBAIHN1YiBwcmludFdyYXBwZXJGdW5jdGlv
bnMKICAgICAgICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIkpTIikgewot
ICAgICAgICAgICAgIyBIYWNrIGZvciB0aGUgbWVkaWEgdGFncwotICAgICAgICAgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGRvbmUgdmlhIGEgQ3VzdG9tV3JhcHBlciBhdHRyaWJ1
dGUgYW5kIGEgc2VwYXJhdGUgKkN1c3RvbSBmaWxlLgotICAgICAgICAgICAgaWYgKCRlbmFibGVk
VGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgICAgICAjIEhhY2sgZm9yIHRoZSBtZWRpYSB0YWdz
CisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkb25lIHZpYSBhIEN1c3Rv
bVdyYXBwZXIgYXR0cmlidXRlIGFuZCBhIHNlcGFyYXRlICpDdXN0b20gZmlsZS4KKyAgICAgICAg
aWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9
KSB7CisgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVh
dGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudD4gZWxlbWVudCkKIHsKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBlbGVtZW50LT5kb2N1
bWVudCgpLT5zZXR0aW5ncygpOwpAQCAtMTA2OCwxMCArMTA1NSwxMCBAQCBzdGF0aWMgSlNET01X
cmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlCiB9CiAKIEVORAotOwotICAgICAgICAgICAgfSBl
bHNpZiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9KSB7Ci0gICAg
ICAgICAgICAgICAgbXkgJGNvbnRleHRDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFt
ZX17Y29udGV4dENvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECisg
ICAgOworICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnRleHRDb25k
aXRpb25hbH0pIHsKKyAgICAgICAgICAgIG15ICRjb250ZXh0Q29uZGl0aW9uYWwgPSAkZW5hYmxl
ZFRhZ3N7JHRhZ05hbWV9e2NvbnRleHRDb25kaXRpb25hbH07CisgICAgICAgICAgICBwcmludCBG
IDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFw
cGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKIHsKICAgICBp
ZiAoIUNvbnRleHRGZWF0dXJlczo6JHtjb250ZXh0Q29uZGl0aW9uYWx9RW5hYmxlZChlbGVtZW50
LT5kb2N1bWVudCgpKSkgewpAQCAtMTA4MiwxMCArMTA2OSwxMCBAQCBzdGF0aWMgSlNET01XcmFw
cGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlCiAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwgZWxlbWVudC5nZXQoKSk7CiB9
CiBFTkQKLTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17cnVu
dGltZUNvbmRpdGlvbmFsfSkgewotICAgICAgICAgICAgICAgIG15ICRydW50aW1lQ29uZGl0aW9u
YWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07Ci0gICAgICAg
ICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgIDsKKyAgICAgICAgfSBlbHNpZiAoJGVuYWJsZWRU
YWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9KSB7CisgICAgICAgICAgICBteSAkcnVu
dGltZUNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9u
YWx9OworICAgICAgICAgICAgcHJpbnQgRiA8PEVORAogc3RhdGljIEpTRE9NV3JhcHBlciogY3Jl
YXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ+IGVsZW1lbnQpCiB7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoke3J1
bnRpbWVDb25kaXRpb25hbH1FbmFibGVkKCkpIHsKQEAgLTEwOTYsNzMgKzEwODMsMTYgQEAgc3Rh
dGljIEpTRE9NV3JhcHBlciogY3JlYXRlJHtKU0ludGVyZmFjZQogICAgIHJldHVybiBDUkVBVEVf
RE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAke0pTSW50ZXJmYWNlTmFtZX0sIGVsZW1l
bnQuZ2V0KCkpOwogfQogRU5ECi07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIHByaW50IEYgPDxFTkQKKyAgICA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBw
cmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlTmFt
ZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKIHsK
ICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHtKU0lu
dGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKIH0KIAogRU5ECi07Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAgICAg
ICAgICAgaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFp
bGFibGV9KSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIFNldHRpbmdzKiBzZXR0
aW5ncyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7Ci0gICAgaWYgKCFNZWRpYVBs
YXllcjo6aXNBdmFpbGFibGUoKSB8fCAoc2V0dGluZ3MgJiYgIXNldHRpbmdzLT5tZWRpYUVuYWJs
ZWQoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJl
Y3RXcmFwcGVyKGVsZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgcmV0dXJu
IHdyYXAoc3RhdGljX2Nhc3Q8JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0aW9u
Q29udGV4dCwgaXNvbGF0ZSk7Ci19Ci0KLUVORAotOwotICAgICAgICAgICAgfSBlbHNpZiAoJGVu
YWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9KSB7Ci0gICAgICAgICAgICAg
ICAgbXkgJGNvbnRleHRDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17Y29udGV4
dENvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgaWYgKCFDb250
ZXh0RmVhdHVyZXM6OiR7Y29udGV4dENvbmRpdGlvbmFsfUVuYWJsZWQoZWxlbWVudC0+ZG9jdW1l
bnQoKSkpCi0gICAgICAgIHJldHVybiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWxs
YmFja1dyYXBwZXIodG8kcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1lbnQp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIHJldHVybiB3cmFwKHN0YXRpY19jYXN0
PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotfQotRU5ECi07Ci0gICAgICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e3J1bnRpbWVDb25kaXRpb25hbH0pIHsKLSAgICAgICAgICAgICAgICBteSAkcnVudGltZUNvbmRp
dGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9OwotICAg
ICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVY4
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhbGxiYWNrV3JhcHBlcih0byRwYXJhbWV0ZXJze2ZhbGxi
YWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0g
ICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCks
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci1FTkQKLTsKLSAgICAgICAgICAgIH0gZWxz
aWYgKCR7SlNJbnRlcmZhY2VOYW1lfSBlcSAiSFRNTEVsZW1lbnQiKSB7Ci0gICAgICAgICAgICAg
ICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlJHtK
U0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxl
bWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCk7Ci19Ci0KLUVORAotOwotICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8JHtK
U0ludGVyZmFjZU5hbWV9Kj4oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19
Ci0KLQotRU5ECi07Ci0gICAgICAgICAgICB9CisgICAgOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCRjb25kaXRpb25hbCkgewpAQCAtMTE3NCwxOSArMTEwNCwxOCBAQCBFTkQKIHN1YiBwcmlu
dFdyYXBwZXJGYWN0b3J5Q3BwRmlsZQogewogICAgIG15ICRvdXRwdXREaXIgPSBzaGlmdDsKLSAg
ICBteSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7CiAgICAgbXkgJHdyYXBwZXJGYWN0b3J5
RmlsZU5hbWUgPSBzaGlmdDsKICAgICBteSAkRjsKLSAgICBvcGVuIEYsICI+IiAuICRvdXRwdXRE
aXIgLiAiLyIgLiAkd3JhcHBlckZhY3RvcnlUeXBlIC4gJHdyYXBwZXJGYWN0b3J5RmlsZU5hbWUg
LiAiLmNwcCI7CisgICAgb3BlbiBGLCAiPiIgLiAkb3V0cHV0RGlyIC4gIi9KUyIgLiAkd3JhcHBl
ckZhY3RvcnlGaWxlTmFtZSAuICIuY3BwIjsKIAogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7
CiAKICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcbiI7Ci0gICAgcHJpbnQgRiAi
I2luY2x1ZGUgXCIkd3JhcHBlckZhY3RvcnlUeXBlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnRXcmFwcGVyRmFjdG9yeS5oXCJcbiI7CisgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJKUyRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnkuaFwiXG4iOwogCiAgICAgcHJp
bnQgRiAiXG4jaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1l
dGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAotICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYs
ICR3cmFwcGVyRmFjdG9yeVR5cGUpOworICAgIHByaW50SlNFbGVtZW50SW5jbHVkZXMoJEYpOwog
CiAgICAgcHJpbnQgRiAiXG4jaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lcy5o
XCJcblxuIjsKIApAQCAtMTE5NCw3ICsxMTIzLDcgQEAgc3ViIHByaW50V3JhcHBlckZhY3RvcnlD
cHBGaWxlCiAKICAgICBwcmludCBGICJcbiNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+XG4i
OwogCi0gICAgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgJHdyYXBwZXJGYWN0
b3J5VHlwZSk7CisgICAgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRlcygkRiwgMCk7CiAK
ICAgICBwcmludCBGIDw8RU5ECiAKQEAgLTEyMDksMjMgKzExMzgsMTAgQEAgc3ViIHByaW50V3Jh
cHBlckZhY3RvcnlDcHBGaWxlCiBFTkQKIDsKIAotICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBl
IGVxICJKUyIpIHsgICAgCi0gICAgICAgIHByaW50IEYgPDxFTkQKKyAgICBwcmludCBGIDw8RU5E
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogRU5ECiA7Ci0gICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0
b3J5VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLSNpbmNsdWRlICJWOCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50LmgiCi0KLSNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1F
TlRTKQotI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRIZWxwZXJzLmgiCi0jZW5kaWYKLQotI2luY2x1
ZGUgPHY4Lmg+Ci1FTkQKLTsKLSAgICB9CiAKICAgICBwcmludCBGIDw8RU5ECiAKQEAgLTEyMzUs
MjQgKzExNTEsMTUgQEAgdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYQog
CiBFTkQKIDsKLSAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7Ci0gICAgICAg
IHByaW50IEYgPDxFTkQKK3ByaW50IEYgPDxFTkQKIHR5cGVkZWYgSlNET01XcmFwcGVyKiAoKkNy
ZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uKShFeGVjU3Rh
dGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+KTsKIAogRU5ECiA7Ci0gICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBl
cSAiVjgiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLXR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiAoKkNyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0
aW9uKSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCosIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwotCi1FTkQKLTsKLSAgICB9CiAKLSAg
ICBwcmludFdyYXBwZXJGdW5jdGlvbnMoJEYsICR3cmFwcGVyRmFjdG9yeVR5cGUpOworICAgIHBy
aW50V3JhcHBlckZ1bmN0aW9ucygkRik7CiAKLSAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBl
cSAiSlMiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKK3ByaW50IEYgPDxFTkQKIEpTRE9NV3Jh
cHBlciogY3JlYXRlSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQpCiB7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdU
Rjo6QXRvbWljU3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
V3JhcHBlckZ1bmN0aW9uPiBGdW5jdGlvbk1hcDsKQEAgLTEyNjAsMTYgKzExNjcsNiBAQCBKU0RP
TVdyYXBwZXIqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7bmFtZXNwCiAgICAgaWYgKG1hcC5pc0VtcHR5
KCkpIHsKIEVORAogOwotICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4Iikg
ewotICAgICAgICBwcmludCBGIDw8RU5ECi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVY4
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9taWNTdHJp
bmdJbXBsKiwgQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rp
b24+IEZ1bmN0aW9uTWFwOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoRnVuY3Rpb25NYXAsIG1h
cCwgKCkpOwotICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7Ci1FTkQKLTsKLSAgICB9CiAKICAgICBm
b3IgbXkgJHRhZyAoc29ydCBrZXlzICVlbmFibGVkVGFncykgewogICAgICAgICAjIERvIG5vdCBh
ZGQgdGhlIG5hbWUgdG8gdGhlIG1hcCBpZiBpdCBkb2VzIG5vdCBoYXZlIGEgSlMgd3JhcHBlciBj
b25zdHJ1Y3RvciBvciB1c2VzIHRoZSBkZWZhdWx0IHdyYXBwZXIuCkBAIC0xMjkzLDk4ICsxMTkw
LDIyIEBAIEVORAogICAgIH0KIEVORAogOwotICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVx
ICJWOCIpIHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAotI2lmIEVOQUJMRShDVVNUT01fRUxFTUVO
VFMpCi0gICAgaWYgKFBhc3NSZWZQdHI8Q3VzdG9tRWxlbWVudENvbnN0cnVjdG9yPiBjb25zdHJ1
Y3RvciA9IEN1c3RvbUVsZW1lbnRIZWxwZXJzOjpjb25zdHJ1Y3Rvck9mKGVsZW1lbnQpKQotICAg
ICAgICByZXR1cm4gQ3VzdG9tRWxlbWVudEhlbHBlcnM6OndyYXAoZWxlbWVudCwgY3JlYXRpb25D
b250ZXh0LCBjb25zdHJ1Y3RvciwgaXNvbGF0ZSk7Ci0jZW5kaWYKLUVORAotOwotICAgIH0KIAog
ICAgIHByaW50IEYgPDxFTkQKICAgICBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dFdyYXBwZXJGdW5jdGlvbiBjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPSBtYXAuZ2V0KGVsZW1lbnQt
PmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgaWYgKGNyZWF0ZVdyYXBwZXJGdW5jdGlvbikKIEVO
RAogOwotICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJKUyIpIHsKLSAgICAgICAgcHJp
bnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKICAgICAgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXJGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGVsZW1lbnQpOwogICAgIHJldHVybiBDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tmYWxsYmFja0lu
dGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKIEVORAogOwotICAgIH0gZWxzaWYgKCR3cmFw
cGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgewot
RU5ECi07Ci0gICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgewot
ICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgICAgICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0
aW9uID09IGNyZWF0ZUhUTUxFbGVtZW50V3JhcHBlcikKLSAgICAgICAgICAgcmV0dXJuIFY4SFRN
TEVsZW1lbnQ6OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLUVORAotICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVdyYXBwZXJGdW5jdGlvbihlbGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotICAgIH0KLUVORAotOwotICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAi
U1ZHIikgewotICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIHJldHVybiBWOFNWR0VsZW1l
bnQ6OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVO
RAotOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIHJl
dHVybiB3cmFwKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLUVORAotOwotICAgICAgICB9Ci0gICAgfQogICAg
IHByaW50IEYgPDxFTkQKIH0KIEVORAogOwogCi0gICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUg
ZXEgIlY4IikgewotICAgICAgICBwcmludCBGIDw8RU5ECi0KLWNvbnN0IFF1YWxpZmllZE5hbWUq
IGZpbmQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9VGFnTmFtZU9mVjhUeXBlKGNvbnN0IFdyYXBwZXJU
eXBlSW5mbyogdHlwZSkKLXsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgV3JhcHBlclR5cGVJ
bmZvKiwgY29uc3QgUXVhbGlmaWVkTmFtZSo+IFR5cGVOYW1lTWFwOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoVHlwZU5hbWVNYXAsIG1hcCwgKCkpOwotICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7
Ci1FTkQKLTsKLQotICAgICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRh
Z3MpIHsKLSAgICAgICAgICAgIGlmICghdXNlc0RlZmF1bHRKU1dyYXBwZXIoJHRhZ05hbWUpKSB7
Ci0gICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1l
fXtjb25kaXRpb25hbH07Ci0gICAgICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewotICAg
ICAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2lu
KCIpICYmIEVOQUJMRSgiLCBzcGxpdCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwotICAgICAg
ICAgICAgICAgICAgICBwcmludCBGICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICRl
bmFibGVkVGFnc3skdGFnTmFtZX17SlNJbnRlcmZhY2VOYW1lfTsKLSAgICAgICAgICAgICAgICBw
cmludCBGICIgICAgICAgbWFwLnNldChXcmFwcGVyVHlwZVRyYWl0czwke0pTSW50ZXJmYWNlTmFt
ZX0+OjppbmZvKCksICYke3RhZ05hbWV9VGFnKTtcbiI7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
JGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNlbmRpZlxuIjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBw
cmludCBGIDw8RU5ECi0gICAgfQotCi0gICAgcmV0dXJuIG1hcC5nZXQodHlwZSk7Ci19Ci0KLUVO
RAotOwotICAgIH0KLQogICAgIHByaW50IEYgIn1cblxuIjsKICAgICBwcmludCBGICIjZW5kaWZc
biIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKQEAgLTEzOTQsMjAgKzEyMTUs
MTggQEAgRU5ECiBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRlckZpbGUKIHsKICAgICBteSAk
b3V0cHV0RGlyID0gc2hpZnQ7Ci0gICAgbXkgJHdyYXBwZXJGYWN0b3J5VHlwZSA9IHNoaWZ0Owog
ICAgIG15ICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lID0gc2hpZnQ7CiAgICAgbXkgJEY7Ci0gICAg
b3BlbiBGLCAiPiIgLiAkb3V0cHV0RGlyIC4gIi8iIC4gJHdyYXBwZXJGYWN0b3J5VHlwZSAuICR3
cmFwcGVyRmFjdG9yeUZpbGVOYW1lIC4gIi5oIjsKKyAgICBvcGVuIEYsICI+IiAuICRvdXRwdXRE
aXIgLiAiL0pTIiAuICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lIC4gIi5oIjsKIAogICAgIHByaW50
TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIjaWZuZGVmICR3cmFwcGVyRmFjdG9y
eVR5cGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hcbiI7Ci0g
ICAgcHJpbnQgRiAiI2RlZmluZSAkd3JhcHBlckZhY3RvcnlUeXBlJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG5cbiI7CisgICAgcHJpbnQgRiAiI2lmbmRlZiBK
UyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuIjsKKyAgICBw
cmludCBGICIjZGVmaW5lIEpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFj
dG9yeV9oXG5cbiI7CiAKICAgICBwcmludCBGICIjaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5
V2l0aH1cbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKLSAgICBpZiAoJHdy
YXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKKyAgICBw
cmludCBGIDw8RU5ECiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xNDI1LDM1ICsxMjQ0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0KICAKIEVORAot
OwotICAgIH0gZWxzaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAgICAgICBw
cmludCBGIDw8RU5ECi0jaW5jbHVkZSA8VjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudC5o
PgotI2luY2x1ZGUgPFY4JHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfS5oPgotI2lu
Y2x1ZGUgPHY4Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzICRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50OwotCi0gICAgY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1UYWdOYW1lT2ZWOFR5cGUoY29uc3QgV3JhcHBlclR5cGVJbmZv
Kik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7Ci0gICAgaW5saW5lIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RGlyZWN0
V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ6OmNyZWF0
ZVdyYXBwZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICB9Ci0gICAg
aW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RmFsbGJhY2tXcmFwcGVyKCRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0qIGVs
ZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBWOCRwYXJhbWV0ZXJze2ZhbGxiYWNr
SW50ZXJmYWNlTmFtZX06OmNyZWF0ZVdyYXBwZXIoZWxlbWVudCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKLSAgICB9Ci19Ci1FTkQKLTsKLSAgICB9CisgICAgOwogCiAgICAgcHJpbnQgRiAi
I2VuZGlmIC8vICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG5cbiIgaWYgJHBhcmFtZXRl
cnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKLSAgICBwcmludCBGICIjZW5kaWYgLy8gJHdyYXBwZXJG
YWN0b3J5VHlwZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxu
IjsKKyAgICBwcmludCBGICIjZW5kaWYgLy8gSlMkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVu
dFdyYXBwZXJGYWN0b3J5X2hcbiI7CiAKICAgICBjbG9zZSBGOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01v
ZHVsZVNvdXJjZS5qcwkocmV2aXNpb24gMTQ4NDg1KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDYsNjggKzIwNiwxMiBAQCBTdGFja1RyYWNlLnByb3RvdHlwZSA9IHsKICAqLwogU3RhY2tU
cmFjZS5jcmVhdGUgPSBmdW5jdGlvbihzdGFja1RyYWNlTGltaXQsIHRvcE1vc3RGdW5jdGlvblRv
SWdub3JlKQogewotICAgIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09ICJm
dW5jdGlvbiIpCi0gICAgICAgIHJldHVybiBuZXcgU3RhY2tUcmFjZVY4KHN0YWNrVHJhY2VMaW1p
dCwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUgfHwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgSlNDLCBhbmQgbWF5YmUgb3RoZXIgYnJvd3NlcnMuCiAgICAgcmV0dXJu
IG51bGw7CiB9CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAaW1wbGVtZW50cyB7U3RhY2tU
cmFjZX0KLSAqIEBwYXJhbSB7bnVtYmVyPX0gc3RhY2tUcmFjZUxpbWl0Ci0gKiBAcGFyYW0ge0Z1
bmN0aW9uPX0gdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUKLSAqIEBzZWUgaHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL3Y4L3dpa2kvSmF2YVNjcmlwdFN0YWNrVHJhY2VBcGkKLSAqLwotZnVuY3Rpb24g
U3RhY2tUcmFjZVY4KHN0YWNrVHJhY2VMaW1pdCwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUpCi17
Ci0gICAgU3RhY2tUcmFjZS5jYWxsKHRoaXMpOwotCi0gICAgdmFyIG9sZFByZXBhcmVTdGFja1Ry
YWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7Ci0gICAgdmFyIG9sZFN0YWNrVHJhY2VMaW1p
dCA9IEVycm9yLnN0YWNrVHJhY2VMaW1pdDsKLSAgICBpZiAodHlwZW9mIHN0YWNrVHJhY2VMaW1p
dCA9PT0gIm51bWJlciIpCi0gICAgICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IHN0YWNrVHJh
Y2VMaW1pdDsKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7T2JqZWN0fSBlcnJvcgotICAgICAq
IEBwYXJhbSB7QXJyYXkuPENhbGxTaXRlPn0gc3RydWN0dXJlZFN0YWNrVHJhY2UKLSAgICAgKiBA
cmV0dXJuIHtBcnJheS48e3NvdXJjZVVSTDogc3RyaW5nLCBsaW5lTnVtYmVyOiBudW1iZXIsIGNv
bHVtbk51bWJlcjogbnVtYmVyfT59Ci0gICAgICovCi0gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJh
Y2UgPSBmdW5jdGlvbihlcnJvciwgc3RydWN0dXJlZFN0YWNrVHJhY2UpCi0gICAgewotICAgICAg
ICByZXR1cm4gc3RydWN0dXJlZFN0YWNrVHJhY2UubWFwKGZ1bmN0aW9uKGNhbGxTaXRlKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHNvdXJjZVVSTDogY2FsbFNpdGUu
Z2V0RmlsZU5hbWUoKSwKLSAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBjYWxsU2l0ZS5nZXRM
aW5lTnVtYmVyKCksCi0gICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyOiBjYWxsU2l0ZS5nZXRD
b2x1bW5OdW1iZXIoKQotICAgICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAg
dmFyIGhvbGRlciA9IC8qKiBAdHlwZSB7e3N0YWNrOiBBcnJheS48e3NvdXJjZVVSTDogc3RyaW5n
LCBsaW5lTnVtYmVyOiBudW1iZXIsIGNvbHVtbk51bWJlcjogbnVtYmVyfT59fSAqLyAoe30pOwot
ICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGhvbGRlciwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25v
cmUgfHwgYXJndW1lbnRzLmNhbGxlZSk7Ci0gICAgdGhpcy5fc3RhY2tUcmFjZSA9IGhvbGRlci5z
dGFjazsKLQotICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IG9sZFN0YWNrVHJhY2VMaW1pdDsK
LSAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IG9sZFByZXBhcmVTdGFja1RyYWNlOwotfQot
Ci1TdGFja1RyYWNlVjgucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQot
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAotICAgICAqIEByZXR1cm4ge3tzb3VyY2VVUkw6
IHN0cmluZywgbGluZU51bWJlcjogbnVtYmVyLCBjb2x1bW5OdW1iZXI6IG51bWJlcn18dW5kZWZp
bmVkfQotICAgICAqLwotICAgIGNhbGxGcmFtZTogZnVuY3Rpb24oaW5kZXgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fc3RhY2tUcmFjZVtpbmRleF07Ci0gICAgfSwKLQotICAgIF9fcHJv
dG9fXzogU3RhY2tUcmFjZS5wcm90b3R5cGUKLX0KLQotLyoqCi0gKiBAY29uc3RydWN0b3IKICAq
LwogZnVuY3Rpb24gQ2FjaGUoKQogewpAQCAtMjI3NCw3ICsyMjE4LDYgQEAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEUmVzb3VyY2UuQXR0cmlidQogICAgICJ0ZXh0QWxpZ24iLAogICAgICJ0ZXh0
QmFzZWxpbmUiLAogICAgICJsaW5lRGFzaE9mZnNldCIsCi0gICAgLy8gRklYTUU6IFRlbXBvcmFy
eSBwcm9wZXJ0aWVzIGltcGxlbWVudGVkIGluIEpTQywgYnV0IG5vdCBpbiBWOC4KICAgICAid2Vi
a2l0TGluZURhc2giLAogICAgICJ3ZWJraXRMaW5lRGFzaE9mZnNldCIKIF07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTQ4
NDg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1TdXBwb3J0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDUxICszMSw2IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0vLyBWOCBiaW5kaW5ncyB1c2UgdGhl
IEFSUkFZU0laRV9VTlNBRkUgbWFjcm8uIFRoaXMgbWFjcm8gd2FzIGNvcGllZAotLy8gZnJvbSBo
dHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lL3RydW5rL3NyYy9iYXNlL2Jhc2lj
dHlwZXMuaAotLy8KLS8vIEFSUkFZU0laRV9VTlNBRkUgcGVyZm9ybXMgZXNzZW50aWFsbHkgdGhl
IHNhbWUgY2FsY3VsYXRpb24gYXMgYXJyYXlzaXplLAotLy8gYnV0IGNhbiBiZSB1c2VkIG9uIGFu
b255bW91cyB0eXBlcyBvciB0eXBlcyBkZWZpbmVkIGluc2lkZQotLy8gZnVuY3Rpb25zLiBJdCdz
IGxlc3Mgc2FmZSB0aGFuIGFycmF5c2l6ZSBhcyBpdCBhY2NlcHRzIHNvbWUKLS8vIChhbHRob3Vn
aCBub3QgYWxsKSBwb2ludGVycy4gVGhlcmVmb3JlLCB5b3Ugc2hvdWxkIHVzZSBhcnJheXNpemUK
LS8vIHdoZW5ldmVyIHBvc3NpYmxlLgotLy8KLS8vIFRoZSBleHByZXNzaW9uIEFSUkFZU0laRV9V
TlNBRkUoYSkgaXMgYSBjb21waWxlLXRpbWUgY29uc3RhbnQgb2YgdHlwZQotLy8gc2l6ZV90Lgot
Ly8KLS8vIEFSUkFZU0laRV9VTlNBRkUgY2F0Y2hlcyBhIGZldyB0eXBlIGVycm9ycy4gSWYgeW91
IHNlZSBhIGNvbXBpbGVyIGVycm9yCi0vLwotLy8gICAid2FybmluZzogZGl2aXNpb24gYnkgemVy
byBpbiAuLi4iCi0vLwotLy8gd2hlbiB1c2luZyBBUlJBWVNJWkVfVU5TQUZFLCB5b3UgYXJlICh3
cm9uZ2Z1bGx5KSBnaXZpbmcgaXQgYSBwb2ludGVyLgotLy8gWW91IHNob3VsZCBvbmx5IHVzZSBB
UlJBWVNJWkVfVU5TQUZFIG9uIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFycmF5cy4KLS8vCi0vLyBU
aGUgZm9sbG93aW5nIGNvbW1lbnRzIGFyZSBvbiB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywg
YW5kIGNhbgotLy8gYmUgaWdub3JlZCBieSB0aGUgdXNlcnMuCi0vLwotLy8gQVJSQVlTSVpFX1VO
U0FGRShhcnIpIHdvcmtzIGJ5IGluc3BlY3Rpbmcgc2l6ZW9mKGFycikgKHRoZSAjIG9mIGJ5dGVz
IGluCi0vLyB0aGUgYXJyYXkpIGFuZCBzaXplb2YoKihhcnIpKSAodGhlICMgb2YgYnl0ZXMgaW4g
b25lIGFycmF5Ci0vLyBlbGVtZW50KS4gSWYgdGhlIGZvcm1lciBpcyBkaXZpc2libGUgYnkgdGhl
IGxhdHRlciwgcGVyaGFwcyBhcnIgaXMKLS8vIGluZGVlZCBhbiBhcnJheSwgaW4gd2hpY2ggY2Fz
ZSB0aGUgZGl2aXNpb24gcmVzdWx0IGlzIHRoZSAjIG9mCi0vLyBlbGVtZW50cyBpbiB0aGUgYXJy
YXkuIE90aGVyd2lzZSwgYXJyIGNhbm5vdCBwb3NzaWJseSBiZSBhbiBhcnJheSwKLS8vIGFuZCB3
ZSBnZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIHRvIHByZXZlbnQgdGhlIGNvZGUgZnJvbQotLy8g
Y29tcGlsaW5nLgotLy8KLS8vIFNpbmNlIHRoZSBzaXplIG9mIGJvb2wgaXMgaW1wbGVtZW50YXRp
b24tZGVmaW5lZCwgd2UgbmVlZCB0byBjYXN0Ci0vLyAhKHNpemVvZihhKSAmIHNpemVvZigqKGEp
KSkgdG8gc2l6ZV90IGluIG9yZGVyIHRvIGVuc3VyZSB0aGUgZmluYWwKLS8vIHJlc3VsdCBoYXMg
dHlwZSBzaXplX3QuCi0vLwotLy8gVGhpcyBtYWNybyBpcyBub3QgcGVyZmVjdCBhcyBpdCB3cm9u
Z2Z1bGx5IGFjY2VwdHMgY2VydGFpbgotLy8gcG9pbnRlcnMsIG5hbWVseSB3aGVyZSB0aGUgcG9p
bnRlciBzaXplIGlzIGRpdmlzaWJsZSBieSB0aGUgcG9pbnRlZQotLy8gc2l6ZS4gU2luY2UgYWxs
IG91ciBjb2RlIGhhcyB0byBnbyB0aHJvdWdoIGEgMzItYml0IGNvbXBpbGVyLAotLy8gd2hlcmUg
YSBwb2ludGVyIGlzIDQgYnl0ZXMsIHRoaXMgbWVhbnMgYWxsIHBvaW50ZXJzIHRvIGEgdHlwZSB3
aG9zZQotLy8gc2l6ZSBpcyAzIG9yIGdyZWF0ZXIgdGhhbiA0IHdpbGwgYmUgKHJpZ2h0ZW91c2x5
KSByZWplY3RlZC4KLQotI2RlZmluZSBBUlJBWVNJWkVfVU5TQUZFKGEpIFwKLSAgKChzaXplb2Yo
YSkgLyBzaXplb2YoKihhKSkpIC8gXAotICAgc3RhdGljX2Nhc3Q8c2l6ZV90PighKHNpemVvZihh
KSAlIHNpemVvZigqKGEpKSkpKQotCi0KIHR5cGVkZWYgc3RydWN0IE5QT2JqZWN0IE5QT2JqZWN0
OwogdHlwZWRlZiBzdHJ1Y3QgX05QUCBOUFBfdDsKIHR5cGVkZWYgTlBQX3QqIE5QUDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAkocmV2aXNpb24gMTQ4NDg1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcs
NyBAQCBwdWJsaWM6CiAKICAgICBTVkdab29tQW5kUGFuVHlwZSB6b29tQW5kUGFuKCkgY29uc3Qg
eyByZXR1cm4gU1ZHWm9vbUFuZFBhblVua25vd247IH0KIAotICAgIC8vIFRoZXNlIG1ldGhvZHMg
b25seSBleGlzdCB0byBhbGxvdyB1cyB0byBjb21waWxlIFY4L0pTU1ZHWm9vbUFuZFBhbi4qLgor
ICAgIC8vIFRoZXNlIG1ldGhvZHMgb25seSBleGlzdCB0byBhbGxvdyB1cyB0byBjb21waWxlIEpT
U1ZHWm9vbUFuZFBhbi4qLgogICAgIC8vIFRoZXNlIGFyZSBuZXZlciBjYWxsZWQsIGFuZCB0aHVz
IEFTU0VSVF9OT1RfUkVBQ0hFRC4KICAgICB2b2lkIHJlZigpOwogICAgIHZvaWQgZGVyZWYoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198273</attachid>
            <date>2013-04-16 01:13:47 -0700</date>
            <delta_ts>2013-04-16 01:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114657-20130416011321.patch</filename>
            <type>text/plain</type>
            <size>29387</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEzLTA0LTE1ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIG1vcmUgdHJhY2Vz
IG9mIHRoZSBub3ctb2Jzb2xldGUgc3VwcG9ydCBmb3IgVjgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDY1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGFkZGl0aW9uIHRvIHBhc3NpbmcgZXhpc3Rp
bmcgdGVzdHMsIEkgdmVyaWZpZWQgdGhhdCB0aGUgRWxlbWVudEZhY3RvcnkKKyAgICAgICAgYW5k
IEVsZW1lbnRXcmFwcGVyRmFjdG9yeSBmaWxlcyB3ZXJlIGFsbCB0ZXh0dWFsbHkgaWRlbnRpY2Fs
IGJlZm9yZSBhbmQgYWZ0ZXIuCisKKyAgICAgICAgKiBkb20vQ3VzdG9tRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6IFJlbW92ZSBVc2UoVjgpIGJvY2suCisgICAgICAgICogZG9tL0N1c3Rv
bUV2ZW50Lmg6CisgICAgICAgIChDdXN0b21FdmVudCk6IGRpdHRvCisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VF
dmVudCk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdl
RXZlbnQpOiBkaXR0bworICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKTogZGl0
dG8KKyAgICAgICAgKiBkb20vbWFrZV9ldmVudF9mYWN0b3J5LnBsOgorICAgICAgICAoZ2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6IFJlbW92ZSBWOCBzdXBwb3J0LgorICAgICAgICAqIGRvbS9tYWtl
X25hbWVzLnBsOiBSZW1vdmUgZ29icyBvZiBWOCBzdXBwb3J0IGFuZCBzaW1wbGlmeS4KKyAgICAg
ICAgKHByaW50SlNFbGVtZW50SW5jbHVkZXMpOiAKKyAgICAgICAgKHByaW50Q29uZGl0aW9uYWxF
bGVtZW50SW5jbHVkZXMpOgorICAgICAgICAocHJpbnRGYWN0b3J5Q3BwRmlsZSk6CisgICAgICAg
IChwcmludFdyYXBwZXJGdW5jdGlvbnMpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUNw
cEZpbGUpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRlckZpbGUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdENhbnZhc01vZHVsZVNvdXJjZS5qczogUmVtb3Zl
IFY4IHN0YWNrCisgICAgICAgIHRyYWNlIGNvZGUuCisgICAgICAgICogcGxhdGZvcm0vcXQvUGxh
dGZvcm1TdXBwb3J0Lmg6IFJlbW92ZSBhIG1hY3JvIG9ubHkgdXNlZCBmb3IgVjggCisgICAgICAg
IGJpbmRpbmdzLgorICAgICAgICAqIHN2Zy9TVkdab29tQW5kUGFuLmg6CisgICAgICAgIChTVkda
b29tQW5kUGFuKTogUmVtb3ZlIG1lbnRpb24gb2YgVjggZnJvbSBjb21tZW50LgorCiAyMDEzLTA0
LTE1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgcmVz
dGFydGVkUGx1Z2luIHRvIGlzUmVzdGFydGVkUGx1Z2luLiBUaGlzIHdhcwpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuY3BwCShyZXZpc2lvbiAxNDg0OTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxOSArNTksNiBAQCB2
b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZlbnQoY29uc3QgCiAgICAgbV9kZXRhaWwgPSBk
ZXRhaWw7CiB9CiAKLSNpZiBVU0UoVjgpCi12b2lkIEN1c3RvbUV2ZW50Ojppbml0Q3VzdG9tRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxh
YmxlLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZh
bHVlKQotewotICAgIEFTU0VSVChtX2RldGFpbC5oYXNOb1ZhbHVlKCkpOwotICAgIGlmIChkaXNw
YXRjaGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUpOwotCi0gICAgbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUgPSBzZXJpYWxp
emVkU2NyaXB0VmFsdWU7Ci19Ci0jZW5kaWYgLy8gVVNFKFY4KQotCiBjb25zdCBBdG9taWNTdHJp
bmcmIEN1c3RvbUV2ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvckN1c3RvbUV2ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0N1c3RvbUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3Rv
bUV2ZW50LmgJKHJldmlzaW9uIDE0ODQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21F
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1Myw2IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFNjcmlwdFZhbHVlJiBkZXRhaWwpOwot
I2lmIFVTRShWOCkKLSAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPik7Ci0jZW5kaWYKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
RXZlbnQuY3BwCShyZXZpc2lvbiAxNDg0OTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTAgKzczLDYgQEAgTWVzc2FnZUV2ZW50
OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZQogICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAg
ICwgbV9wb3J0cyhwb3J0cykKIHsKLSNpZiBVU0UoVjgpCi0gICAgaWYgKG1fZGF0YUFzU2VyaWFs
aXplZFNjcmlwdFZhbHVlKQotICAgICAgICBtX2RhdGFBc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+
cmVnaXN0ZXJNZW1vcnlBbGxvY2F0ZWRXaXRoQ3VycmVudFNjcmlwdENvbnRleHQoKTsKLSNlbmRp
ZgogfQogCiBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQpAQCAtMTM4LDExICsxMzQsNiBAQCB2b2lkIE1lc3NhZ2VFdmVu
dDo6aW5pdE1lc3NhZ2VFdmVudChjb25zCiAgICAgbV9sYXN0RXZlbnRJZCA9IGxhc3RFdmVudElk
OwogICAgIG1fc291cmNlID0gc291cmNlOwogICAgIG1fcG9ydHMgPSBwb3J0czsKLQotI2lmIFVT
RShWOCkKLSAgICBpZiAobV9kYXRhQXNTZXJpYWxpemVkU2NyaXB0VmFsdWUpCi0gICAgICAgIG1f
ZGF0YUFzU2VyaWFsaXplZFNjcmlwdFZhbHVlLT5yZWdpc3Rlck1lbW9yeUFsbG9jYXRlZFdpdGhD
dXJyZW50U2NyaXB0Q29udGV4dCgpOwotI2VuZGlmCiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyB3aGVuIHdlIGhhdmUgY3VzdG9tIE9iakMgYmluZGluZyBzdXBwb3J0LgpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCShyZXZpc2lvbiAxNDg0OTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsMTEgKzM4OCw2IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0V2ZW50
VGFyZ2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzRXZlbnRUYXJnZXREYXRhRmxh
Zyk7IH0KICAgICB2b2lkIHNldEhhc0V2ZW50VGFyZ2V0RGF0YShib29sIGZsYWcpIHsgc2V0Rmxh
ZyhmbGFnLCBIYXNFdmVudFRhcmdldERhdGFGbGFnKTsgfQogCi0jaWYgVVNFKFY4KQotICAgIGJv
b2wgaXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWco
VjhDb2xsZWN0YWJsZUR1cmluZ01pbm9yR0NGbGFnKTsgfQotICAgIHZvaWQgc2V0VjhDb2xsZWN0
YWJsZUR1cmluZ01pbm9yR0MoYm9vbCBmbGFnKSB7IHNldEZsYWcoZmxhZywgVjhDb2xsZWN0YWJs
ZUR1cmluZ01pbm9yR0NGbGFnKTsgfQotI2VuZGlmCi0KICAgICBlbnVtIFNob3VsZFNldEF0dGFj
aGVkIHsKICAgICAgICAgU2V0QXR0YWNoZWQsCiAgICAgICAgIERvTm90U2V0QXR0YWNoZWQKQEAg
LTcyOCw5ICs3MjMsNiBAQCBwcml2YXRlOgogICAgICAgICBIYXNDdXN0b21TdHlsZUNhbGxiYWNr
c0ZsYWcgPSAxIDw8IDIxLAogICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAx
IDw8IDIyLAogICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAyMywKLSNpZiBV
U0UoVjgpCi0gICAgICAgIFY4Q29sbGVjdGFibGVEdXJpbmdNaW5vckdDRmxhZyA9IDEgPDwgMjQs
Ci0jZW5kaWYKICAgICAgICAgTmVlZHNTaGFkb3dUcmVlV2Fsa2VyRmxhZyA9IDEgPDwgMjUsCiAg
ICAgICAgIElzSW5TaGFkb3dUcmVlRmxhZyA9IDEgPDwgMjYsCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9tYWtlX2V2ZW50X2ZhY3RvcnkucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkocmV2aXNpb24gMTQ4NDkwKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL21ha2VfZXZlbnRfZmFjdG9yeS5wbAkod29ya2luZyBjb3B5KQpAQCAtODYs
OSArODYsNiBAQCBzdWIgZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbigpCiAgICAgcHJpbnQgRiAiI2lu
Y2x1ZGUgXCIke25hbWVzcGFjZX1GYWN0b3J5LmhcIlxuIjsKICAgICBwcmludCBGICJcbiI7CiAg
ICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIke25hbWVzcGFjZX1IZWFkZXJzLmhcIlxuIjsKLSAgICBw
cmludCBGICIjaWYgVVNFKFY4KVxuIjsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaFwiXG4iOwotICAgIHByaW50IEYgIiNlbmRpZlxuIjsKICAgICBwcmlu
dCBGICJcbiI7CiAgICAgcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuIjsKICAgICBwcmlu
dCBGICJcbiI7CkBAIC0xMDEsMTYgKzk4LDkgQEAgc3ViIGdlbmVyYXRlSW1wbGVtZW50YXRpb24o
KQogICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRJbkNvbXBpbGVyLT5pbnRlcmZhY2VGb3JJ
dGVtKCRldmVudE5hbWUpOwogCiAgICAgICAgIHByaW50IEYgIiNpZiBFTkFCTEUoJGNvbmRpdGlv
bmFsKVxuIiBpZiAkY29uZGl0aW9uYWw7Ci0gICAgICAgIGlmICgkcnVudGltZUNvbmRpdGlvbmFs
KSB7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgI2lmIFVTRShWOClcbiI7Ci0gICAgICAgICAg
ICBwcmludCBGICIgICAgLy8gRklYTUU6IEpTQyBzaG91bGQgc3VwcG9ydCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzIGFzIHdlbGwuXG4iOwotICAgICAgICAgICAgcHJpbnQgRiAiICAgIGlmICh0eXBl
ID09IFwiJGV2ZW50TmFtZVwiICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiRydW50aW1lQ29u
ZGl0aW9uYWwoKSlcbiI7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgICAgIHJldHVybiAke2lu
dGVyZmFjZU5hbWV9OjpjcmVhdGUoKTtcbiI7Ci0gICAgICAgICAgICBwcmludCBGICIgICAgI2Vs
c2VcbiI7Ci0gICAgICAgIH0KKyAgICAgICAgIyBGSVhFTUUgSlNDIHNob3VsZCBzdXBwb3J0IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMKICAgICAgICAgcHJpbnQgRiAiICAgIGlmICh0eXBlID09IFwi
JGV2ZW50TmFtZVwiKVxuIjsKICAgICAgICAgcHJpbnQgRiAiICAgICAgICByZXR1cm4gJHtpbnRl
cmZhY2VOYW1lfTo6Y3JlYXRlKCk7XG4iOwotICAgICAgICBwcmludCBGICIjZW5kaWYgLy8gVVNF
KFY4KVxuIiBpZiAkcnVudGltZUNvbmRpdGlvbmFsOwogICAgICAgICBwcmludCBGICIjZW5kaWZc
biIgaWYgJGNvbmRpdGlvbmFsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21h
a2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMu
cGwJKHJldmlzaW9uIDE0ODQ5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBs
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBAIHN1YiByZWFkQXR0cnMoJCQpOwogCiBt
eSAkcHJpbnRGYWN0b3J5ID0gMDsgCiBteSAkcHJpbnRXcmFwcGVyRmFjdG9yeSA9IDA7IAotbXkg
JHByaW50V3JhcHBlckZhY3RvcnlWOCA9IDA7IAogbXkgJGZvbnROYW1lc0luID0gIiI7CiBteSAk
dGFnc0ZpbGUgPSAiIjsKIG15ICRhdHRyc0ZpbGUgPSAiIjsKQEAgLTgxLDcgKzgwLDYgQEAgR2V0
T3B0aW9ucygKICAgICAnZXh0cmFEZWZpbmVzPXMnID0+IFwkZXh0cmFEZWZpbmVzLAogICAgICdw
cmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgJ3dyYXBwZXJGYWN0b3J5JyA9
PiBcJHByaW50V3JhcHBlckZhY3RvcnksCi0gICAgJ3dyYXBwZXJGYWN0b3J5VjgnID0+IFwkcHJp
bnRXcmFwcGVyRmFjdG9yeVY4LAogICAgICdmb250cz1zJyA9PiBcJGZvbnROYW1lc0luCiApOwog
CkBAIC0xNjgsMTcgKzE2Niw5IEBAIGlmICgkcHJpbnRGYWN0b3J5KSB7CiAgICAgcHJpbnRGYWN0
b3J5SGVhZGVyRmlsZSgiJGZhY3RvcnlCYXNlUGF0aC5oIik7CiB9CiAKLWRpZSAiWW91IGNhbm5v
dCBzcGVjaWZ5IGJvdGggLS13cmFwcGVyRmFjdG9yeSBhbmQgLS13cmFwcGVyRmFjdG9yeVY4IiBp
ZiAkcHJpbnRXcmFwcGVyRmFjdG9yeSAmJiAkcHJpbnRXcmFwcGVyRmFjdG9yeVY4OwotbXkgJHdy
YXBwZXJGYWN0b3J5VHlwZSA9ICIiOwogaWYgKCRwcmludFdyYXBwZXJGYWN0b3J5KSB7Ci0gICAg
JHdyYXBwZXJGYWN0b3J5VHlwZSA9ICJKUyI7Ci19IGVsc2lmICgkcHJpbnRXcmFwcGVyRmFjdG9y
eVY4KSB7Ci0gICAgJHdyYXBwZXJGYWN0b3J5VHlwZSA9ICJWOCI7Ci19Ci0KLWlmICgkd3JhcHBl
ckZhY3RvcnlUeXBlKSB7Ci0gICAgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUoJG91dHB1dERp
ciwgJHdyYXBwZXJGYWN0b3J5VHlwZSwgJHdyYXBwZXJGYWN0b3J5RmlsZU5hbWUpOwotICAgIHBy
aW50V3JhcHBlckZhY3RvcnlIZWFkZXJGaWxlKCRvdXRwdXREaXIsICR3cmFwcGVyRmFjdG9yeVR5
cGUsICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lKTsKKyAgICBwcmludFdyYXBwZXJGYWN0b3J5Q3Bw
RmlsZSgkb3V0cHV0RGlyLCAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSk7CisgICAgcHJpbnRXcmFw
cGVyRmFjdG9yeUhlYWRlckZpbGUoJG91dHB1dERpciwgJHdyYXBwZXJGYWN0b3J5RmlsZU5hbWUp
OwogfQogCiAjIyMgSGFzaCBpbml0aWFsaXphdGlvbgpAQCAtNzI4LDcgKzcxOCw2IEBAIHN1YiBw
cmludE5hbWVzQ3BwRmlsZQogc3ViIHByaW50SlNFbGVtZW50SW5jbHVkZXMKIHsKICAgICBteSAk
RiA9IHNoaWZ0OwotICAgIG15ICR3cmFwcGVyRmFjdG9yeVR5cGUgPSBzaGlmdDsKIAogICAgIG15
ICV0YWdzU2VlbjsKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3Mp
IHsKQEAgLTc0MCw5ICs3MjksOSBAQCBzdWIgcHJpbnRKU0VsZW1lbnRJbmNsdWRlcwogICAgICAg
ICB9CiAgICAgICAgICR0YWdzU2VlbnskSlNJbnRlcmZhY2VOYW1lfSA9IDE7CiAKLSAgICAgICAg
cHJpbnQgRiAiI2luY2x1ZGUgXCIke3dyYXBwZXJGYWN0b3J5VHlwZX0ke0pTSW50ZXJmYWNlTmFt
ZX0uaFwiXG4iOworICAgICAgICBwcmludCBGICIjaW5jbHVkZSBcIkpTJHtKU0ludGVyZmFjZU5h
bWV9LmhcIlxuIjsKICAgICB9Ci0gICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIke3dyYXBwZXJGYWN0
b3J5VHlwZX0kcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9LmhcIlxuIjsKKyAgICBw
cmludCBGICIjaW5jbHVkZSBcIkpTJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfS5o
XCJcbiI7CiB9CiAKIHN1YiBwcmludEVsZW1lbnRJbmNsdWRlcwpAQCAtNzY2LDcgKzc1NSw3IEBA
IHN1YiBwcmludEVsZW1lbnRJbmNsdWRlcwogCiBzdWIgcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJ
bmNsdWRlcwogewotICAgIG15ICgkRiwgJHdyYXBwZXJGYWN0b3J5VHlwZSkgPSBAXzsKKyAgICBt
eSAoJEYsICR3cmFwcGVySW5jbHVkZXMpID0gQF87CiAKICAgICBteSAlY29uZGl0aW9uYWxzOwog
ICAgIG15ICV1bmNvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzOwpAQCAtNzkyLDEwICs3ODEsMTAg
QEAgc3ViIHByaW50Q29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXMKICAgICAgICAgICAgIG5leHQg
aWYgJHVuY29uZGl0aW9uYWxFbGVtZW50SW5jbHVkZXN7JGludGVyZmFjZU5hbWV9OwogICAgICAg
ICAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCIkaW50ZXJmYWNlTmFtZS5oXCJcbiI7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUpIHsKKyAgICAgICAgaWYgKCR3cmFw
cGVySW5jbHVkZXMpIHsKICAgICAgICAgICAgIGZvciBteSAkSlNJbnRlcmZhY2VOYW1lIChzb3J0
IGtleXMgJXskY29uZGl0aW9uYWxzeyRjb25kaXRpb25hbH17SlNJbnRlcmZhY2VOYW1lc319KSB7
CiAgICAgICAgICAgICAgICAgbmV4dCBpZiAkdW5jb25kaXRpb25hbEpTRWxlbWVudEluY2x1ZGVz
eyRKU0ludGVyZmFjZU5hbWV9OwotICAgICAgICAgICAgICAgIHByaW50IEYgIiNpbmNsdWRlIFwi
JHdyYXBwZXJGYWN0b3J5VHlwZSRKU0ludGVyZmFjZU5hbWUuaFwiXG4iOworICAgICAgICAgICAg
ICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkSlNJbnRlcmZhY2VOYW1lLmhcIlxuIjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwcmludCBGICIjZW5kaWZcbiI7CkBAIC04NDks
NyArODM4LDcgQEAgcHJpbnRFbGVtZW50SW5jbHVkZXMoJEYpOwogCiBwcmludCBGICJcbiNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPlxuIjsKIAotcHJpbnRDb25kaXRpb25hbEVsZW1lbnRJbmNsdWRl
cygkRik7CitwcmludENvbmRpdGlvbmFsRWxlbWVudEluY2x1ZGVzKCRGLCAwKTsKIAogcHJpbnQg
RiA8PEVORAogCkBAIC0xMDM5LDcgKzEwMjgsNiBAQCBzdWIgdXNlc0RlZmF1bHRKU1dyYXBwZXIK
IHN1YiBwcmludFdyYXBwZXJGdW5jdGlvbnMKIHsKICAgICBteSAkRiA9IHNoaWZ0OwotICAgIG15
ICR3cmFwcGVyRmFjdG9yeVR5cGUgPSBzaGlmdDsKIAogICAgIG15ICV0YWdzU2VlbjsKICAgICBm
b3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAlZW5hYmxlZFRhZ3MpIHsKQEAgLTEwNTQsMTEgKzEw
NDIsMTAgQEAgc3ViIHByaW50V3JhcHBlckZ1bmN0aW9ucwogICAgICAgICAgICAgcHJpbnQgRiAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
JHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiSlMiKSB7Ci0gICAgICAgICAgICAjIEhhY2sgZm9yIHRo
ZSBtZWRpYSB0YWdzCi0gICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBoYXZlIGJlZW4g
ZG9uZSB2aWEgYSBDdXN0b21XcmFwcGVyIGF0dHJpYnV0ZSBhbmQgYSBzZXBhcmF0ZSAqQ3VzdG9t
IGZpbGUuCi0gICAgICAgICAgICBpZiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXt3cmFwcGVyT25s
eUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECisg
ICAgICAgICMgSGFjayBmb3IgdGhlIG1lZGlhIHRhZ3MKKyAgICAgICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgaGF2ZSBiZWVuIGRvbmUgdmlhIGEgQ3VzdG9tV3JhcHBlciBhdHRyaWJ1dGUgYW5kIGEg
c2VwYXJhdGUgKkN1c3RvbSBmaWxlLgorICAgICAgICBpZiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1l
fXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAgICAgICAgICAgIHByaW50IEYg
PDxFTkQKIHN0YXRpYyBKU0RPTVdyYXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBw
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNz
UmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CkBAIC0x
MDY4LDEwICsxMDU1LDEwIEBAIHN0YXRpYyBKU0RPTVdyYXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZh
Y2UKIH0KIAogRU5ECi07Ci0gICAgICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05h
bWV9e2NvbnRleHRDb25kaXRpb25hbH0pIHsKLSAgICAgICAgICAgICAgICBteSAkY29udGV4dENv
bmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9Owot
ICAgICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKKyAgICA7CisgICAgICAgIH0gZWxzaWYgKCRl
bmFibGVkVGFnc3skdGFnTmFtZX17Y29udGV4dENvbmRpdGlvbmFsfSkgeworICAgICAgICAgICAg
bXkgJGNvbnRleHRDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17Y29udGV4dENv
bmRpdGlvbmFsfTsKKyAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIHN0YXRpYyBKU0RPTVdyYXBw
ZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIGlmICghQ29udGV4dEZlYXR1cmVzOjoke2Nv
bnRleHRDb25kaXRpb25hbH1FbmFibGVkKGVsZW1lbnQtPmRvY3VtZW50KCkpKSB7CkBAIC0xMDgy
LDEwICsxMDY5LDEwIEBAIHN0YXRpYyBKU0RPTVdyYXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2UK
ICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHtKU0lu
dGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKIH0KIEVORAotOwotICAgICAgICAgICAgfSBl
bHNpZiAoJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9KSB7Ci0gICAg
ICAgICAgICAgICAgbXkgJHJ1bnRpbWVDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFt
ZX17cnVudGltZUNvbmRpdGlvbmFsfTsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECisg
ICAgOworICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25k
aXRpb25hbH0pIHsKKyAgICAgICAgICAgIG15ICRydW50aW1lQ29uZGl0aW9uYWwgPSAkZW5hYmxl
ZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07CisgICAgICAgICAgICBwcmludCBG
IDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFw
cGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKIHsKICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQo
KSkgewpAQCAtMTA5Niw3MyArMTA4MywxNiBAQCBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUk
e0pTSW50ZXJmYWNlCiAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxP
YmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwgZWxlbWVudC5nZXQoKSk7CiB9CiBFTkQKLTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgIDsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIHN0YXRpYyBKU0RP
TVdyYXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVj
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIHJldHVybiBDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAke0pTSW50ZXJmYWNlTmFtZX0sIGVsZW1lbnQuZ2V0
KCkpOwogfQogCiBFTkQKLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAoJHdyYXBw
ZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgICAgICBpZiAoJGVuYWJsZWRUYWdzeyR0
YWdOYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKLSAgICAgICAgICAgICAg
ICBwcmludCBGIDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pT
SW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVt
ZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCi17Ci0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS0+c2V0dGluZ3MoKTsKLSAgICBpZiAoIU1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpIHx8IChz
ZXR0aW5ncyAmJiAhc2V0dGluZ3MtPm1lZGlhRW5hYmxlZCgpKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfURpcmVjdFdyYXBwZXIoZWxlbWVudCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKLSAgICByZXR1cm4gd3JhcChzdGF0aWNfY2FzdDwke0pTSW50
ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQot
RU5ECi07Ci0gICAgICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbnRl
eHRDb25kaXRpb25hbH0pIHsKLSAgICAgICAgICAgICAgICBteSAkY29udGV4dENvbmRpdGlvbmFs
ID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9OwotICAgICAgICAg
ICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQq
IGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBpZiAoIUNvbnRleHRGZWF0dXJlczo6JHtjb250ZXh0Q29u
ZGl0aW9uYWx9RW5hYmxlZChlbGVtZW50LT5kb2N1bWVudCgpKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUZhbGxiYWNrV3JhcHBlcih0byRwYXJhbWV0ZXJz
e2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oZWxlbWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7Ci0gICAgcmV0dXJuIHdyYXAoc3RhdGljX2Nhc3Q8JHtKU0ludGVyZmFjZU5hbWV9Kj4oZWxl
bWVudCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci19Ci1FTkQKLTsKLSAgICAgICAgICAg
IH0gZWxzaWYgKCRlbmFibGVkVGFnc3skdGFnTmFtZX17cnVudGltZUNvbmRpdGlvbmFsfSkgewot
ICAgICAgICAgICAgICAgIG15ICRydW50aW1lQ29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRh
Z05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07Ci0gICAgICAgICAgICAgICAgcHJpbnQgRiA8PEVO
RAotc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9
V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewot
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5h
YmxlZCgpKQotICAgICAgICByZXR1cm4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RmFs
bGJhY2tXcmFwcGVyKHRvJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLSAgICByZXR1cm4gd3JhcChzdGF0aWNfY2Fz
dDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKLX0KLUVORAotOwotICAgICAgICAgICAgfSBlbHNpZiAoJHtKU0ludGVyZmFjZU5hbWV9IGVx
ICJIVE1MRWxlbWVudCIpIHsKLSAgICAgICAgICAgICAgICBwcmludCBGIDw8RU5ECi1zdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLX0K
LQotRU5ECi07Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxF
TkQKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1l
fVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsK
LSAgICByZXR1cm4gd3JhcChzdGF0aWNfY2FzdDwke0pTSW50ZXJmYWNlTmFtZX0qPihlbGVtZW50
KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKLX0KLQotCi1FTkQKLTsKLSAgICAgICAgICAg
IH0KKyAgICA7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CkBAIC0x
MTc0LDE5ICsxMTA0LDE4IEBAIEVORAogc3ViIHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxlCiB7
CiAgICAgbXkgJG91dHB1dERpciA9IHNoaWZ0OwotICAgIG15ICR3cmFwcGVyRmFjdG9yeVR5cGUg
PSBzaGlmdDsKICAgICBteSAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSA9IHNoaWZ0OwogICAgIG15
ICRGOwotICAgIG9wZW4gRiwgIj4iIC4gJG91dHB1dERpciAuICIvIiAuICR3cmFwcGVyRmFjdG9y
eVR5cGUgLiAkd3JhcHBlckZhY3RvcnlGaWxlTmFtZSAuICIuY3BwIjsKKyAgICBvcGVuIEYsICI+
IiAuICRvdXRwdXREaXIgLiAiL0pTIiAuICR3cmFwcGVyRmFjdG9yeUZpbGVOYW1lIC4gIi5jcHAi
OwogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAogICAgIHByaW50IEYgIiNpbmNsdWRl
IFwiY29uZmlnLmhcIlxuIjsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIiR3cmFwcGVyRmFjdG9y
eVR5cGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuIjsK
KyAgICBwcmludCBGICIjaW5jbHVkZSBcIkpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRX
cmFwcGVyRmFjdG9yeS5oXCJcbiI7CiAKICAgICBwcmludCBGICJcbiNpZiAkcGFyYW1ldGVyc3tn
dWFyZEZhY3RvcnlXaXRofVxuXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owog
Ci0gICAgcHJpbnRKU0VsZW1lbnRJbmNsdWRlcygkRiwgJHdyYXBwZXJGYWN0b3J5VHlwZSk7Cisg
ICAgcHJpbnRKU0VsZW1lbnRJbmNsdWRlcygkRik7CiAKICAgICBwcmludCBGICJcbiNpbmNsdWRl
IFwiJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmhcIlxuXG4iOwogCkBAIC0xMTk0LDcgKzEx
MjMsNyBAQCBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUKIAogICAgIHByaW50IEYgIlxu
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD5cbiI7CiAKLSAgICBwcmludENvbmRpdGlvbmFs
RWxlbWVudEluY2x1ZGVzKCRGLCAkd3JhcHBlckZhY3RvcnlUeXBlKTsKKyAgICBwcmludENvbmRp
dGlvbmFsRWxlbWVudEluY2x1ZGVzKCRGLCAxKTsKIAogICAgIHByaW50IEYgPDxFTkQKIApAQCAt
MTIwOSwyMyArMTEzOCwxMCBAQCBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUKIEVORAog
OwogCi0gICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIkpTIikgeyAgICAKLSAgICAgICAg
cHJpbnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiBF
TkQKIDsKLSAgICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKLSAgICAg
ICAgcHJpbnQgRiA8PEVORAotI2luY2x1ZGUgIlY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQuaCIKLQotI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0jaW5jbHVkZSAiQ3VzdG9tRWxl
bWVudEhlbHBlcnMuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8djguaD4KLUVORAotOwotICAgIH0K
IAogICAgIHByaW50IEYgPDxFTkQKIApAQCAtMTIzNSwyNCArMTE1MSwxNSBAQCB1c2luZyBuYW1l
c3BhY2UgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hCiAKIEVORAogOwotICAgIGlmICgkd3JhcHBl
ckZhY3RvcnlUeXBlIGVxICJKUyIpIHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAorcHJpbnQgRiA8
PEVORAogdHlwZWRlZiBKU0RPTVdyYXBwZXIqICgqQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
UGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4pOwogCiBFTkQKIDsKLSAg
ICB9IGVsc2lmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKLSAgICAgICAgcHJpbnQg
RiA8PEVORAotdHlwZWRlZiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICgqQ3JlYXRlJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKik7Ci0KLUVORAotOwotICAgIH0KIAotICAgIHByaW50V3JhcHBlckZ1bmN0aW9ucygk
RiwgJHdyYXBwZXJGYWN0b3J5VHlwZSk7CisgICAgcHJpbnRXcmFwcGVyRnVuY3Rpb25zKCRGKTsK
IAotICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJKUyIpIHsKLSAgICAgICAgcHJpbnQg
RiA8PEVORAorcHJpbnQgRiA8PEVORAogSlNET01XcmFwcGVyKiBjcmVhdGVKUyRwYXJhbWV0ZXJz
e25hbWVzcGFjZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxl
bWVudCkKIHsKICAgICB0eXBlZGVmIEhhc2hNYXA8V1RGOjpBdG9taWNTdHJpbmdJbXBsKiwgQ3Jl
YXRlJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24+IEZ1bmN0aW9u
TWFwOwpAQCAtMTI2MCwxNiArMTE2Nyw2IEBAIEpTRE9NV3JhcHBlciogY3JlYXRlSlMkcGFyYW1l
dGVyc3tuYW1lc3AKICAgICBpZiAobWFwLmlzRW1wdHkoKSkgewogRU5ECiA7Ci0gICAgfSBlbHNp
ZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQK
LXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9V3Jh
cHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAg
IHR5cGVkZWYgSGFzaE1hcDxXVEY6OkF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gRnVuY3Rpb25NYXA7Ci0gICAgREVG
SU5FX1NUQVRJQ19MT0NBTChGdW5jdGlvbk1hcCwgbWFwLCAoKSk7Ci0gICAgaWYgKG1hcC5pc0Vt
cHR5KCkpIHsKLUVORAotOwotICAgIH0KIAogICAgIGZvciBteSAkdGFnIChzb3J0IGtleXMgJWVu
YWJsZWRUYWdzKSB7CiAgICAgICAgICMgRG8gbm90IGFkZCB0aGUgbmFtZSB0byB0aGUgbWFwIGlm
IGl0IGRvZXMgbm90IGhhdmUgYSBKUyB3cmFwcGVyIGNvbnN0cnVjdG9yIG9yIHVzZXMgdGhlIGRl
ZmF1bHQgd3JhcHBlci4KQEAgLTEyOTMsOTggKzExOTAsMjIgQEAgRU5ECiAgICAgfQogRU5ECiA7
Ci0gICAgaWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewotICAgICAgICBwcmludCBG
IDw8RU5ECi0jaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBpZiAoUGFzc1JlZlB0cjxD
dXN0b21FbGVtZW50Q29uc3RydWN0b3I+IGNvbnN0cnVjdG9yID0gQ3VzdG9tRWxlbWVudEhlbHBl
cnM6OmNvbnN0cnVjdG9yT2YoZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50
SGVscGVyczo6d3JhcChlbGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGNvbnN0cnVjdG9yLCBpc29s
YXRlKTsKLSNlbmRpZgotRU5ECi07Ci0gICAgfQogCiAgICAgcHJpbnQgRiA8PEVORAogICAgIENy
ZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdy
YXBwZXJGdW5jdGlvbiA9IG1hcC5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKICAg
ICBpZiAoY3JlYXRlV3JhcHBlckZ1bmN0aW9uKQogRU5ECiA7Ci0gICAgaWYgKCR3cmFwcGVyRmFj
dG9yeVR5cGUgZXEgIkpTIikgewotICAgICAgICBwcmludCBGIDw8RU5ECisgICAgcHJpbnQgRiA8
PEVORAogICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9i
amVjdCwgZWxlbWVudCk7CiAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9i
YWxPYmplY3QsICRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0sIGVsZW1lbnQuZ2V0
KCkpOwogRU5ECiA7Ci0gICAgfSBlbHNpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7
Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLSAgICB7Ci1FTkQKLTsKLSAgICAgICAgaWYgKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7Ci0gICAgICAgICAgICBwcmludCBGIDw8RU5E
Ci0gICAgICAgIGlmIChjcmVhdGVXcmFwcGVyRnVuY3Rpb24gPT0gY3JlYXRlSFRNTEVsZW1lbnRX
cmFwcGVyKQotICAgICAgICAgICByZXR1cm4gVjhIVE1MRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihl
bGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotRU5ECi0gICAgICAgIH0KLSAgICAg
ICAgcHJpbnQgRiA8PEVORAotICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGVs
ZW1lbnQsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Ci0gICAgfQotRU5ECi07Ci0gICAgICAg
IGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJTVkciKSB7Ci0gICAgICAgICAgICBwcmlu
dCBGIDw8RU5ECi0gICAgcmV0dXJuIFY4U1ZHRWxlbWVudDo6Y3JlYXRlV3JhcHBlcihlbGVtZW50
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotRU5ECi07Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBwcmludCBGIDw8RU5ECi0gICAgcmV0dXJuIHdyYXAodG8kcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwotRU5ECi07Ci0gICAgICAgIH0KLSAgICB9CiAgICAgcHJpbnQgRiA8PEVORAogfQogRU5ECiA7
CiAKLSAgICBpZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgIHByaW50
IEYgPDxFTkQKLQotY29uc3QgUXVhbGlmaWVkTmFtZSogZmluZCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1UYWdOYW1lT2ZWOFR5cGUoY29uc3QgV3JhcHBlclR5cGVJbmZvKiB0eXBlKQotewotICAgIHR5
cGVkZWYgSGFzaE1hcDxjb25zdCBXcmFwcGVyVHlwZUluZm8qLCBjb25zdCBRdWFsaWZpZWROYW1l
Kj4gVHlwZU5hbWVNYXA7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChUeXBlTmFtZU1hcCwgbWFw
LCAoKSk7Ci0gICAgaWYgKG1hcC5pc0VtcHR5KCkpIHsKLUVORAotOwotCi0gICAgICAgIGZvciBt
eSAkdGFnTmFtZSAoc29ydCBrZXlzICVlbmFibGVkVGFncykgewotICAgICAgICAgICAgaWYgKCF1
c2VzRGVmYXVsdEpTV3JhcHBlcigkdGFnTmFtZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkY29u
ZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e2NvbmRpdGlvbmFsfTsKLSAgICAgICAg
ICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxFKCIsIHNwbGl0KC8m
LywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IEYgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBteSAkSlNJbnRlcmZhY2VOYW1lID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtKU0lu
dGVyZmFjZU5hbWV9OwotICAgICAgICAgICAgICAgIHByaW50IEYgIiAgICAgICBtYXAuc2V0KFdy
YXBwZXJUeXBlVHJhaXRzPCR7SlNJbnRlcmZhY2VOYW1lfT46OmluZm8oKSwgJiR7dGFnTmFtZX1U
YWcpO1xuIjsKLQotICAgICAgICAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKLSAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG4iOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHByaW50IEYgPDxFTkQKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbWFwLmdldCh0eXBlKTsKLX0KLQotRU5ECi07Ci0gICAgfQotCiAgICAgcHJpbnQg
RiAifVxuXG4iOwogICAgIHByaW50IEYgIiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZh
Y3RvcnlXaXRofTsKIApAQCAtMTM5NCwyMCArMTIxNSwxOCBAQCBFTkQKIHN1YiBwcmludFdyYXBw
ZXJGYWN0b3J5SGVhZGVyRmlsZQogewogICAgIG15ICRvdXRwdXREaXIgPSBzaGlmdDsKLSAgICBt
eSAkd3JhcHBlckZhY3RvcnlUeXBlID0gc2hpZnQ7CiAgICAgbXkgJHdyYXBwZXJGYWN0b3J5Rmls
ZU5hbWUgPSBzaGlmdDsKICAgICBteSAkRjsKLSAgICBvcGVuIEYsICI+IiAuICRvdXRwdXREaXIg
LiAiLyIgLiAkd3JhcHBlckZhY3RvcnlUeXBlIC4gJHdyYXBwZXJGYWN0b3J5RmlsZU5hbWUgLiAi
LmgiOworICAgIG9wZW4gRiwgIj4iIC4gJG91dHB1dERpciAuICIvSlMiIC4gJHdyYXBwZXJGYWN0
b3J5RmlsZU5hbWUgLiAiLmgiOwogCiAgICAgcHJpbnRMaWNlbnNlSGVhZGVyKCRGKTsKIAotICAg
IHByaW50IEYgIiNpZm5kZWYgJHdyYXBwZXJGYWN0b3J5VHlwZSRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuIjsKLSAgICBwcmludCBGICIjZGVmaW5lICR3cmFw
cGVyRmFjdG9yeVR5cGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5
X2hcblxuIjsKKyAgICBwcmludCBGICIjaWZuZGVmIEpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG4iOworICAgIHByaW50IEYgIiNkZWZpbmUgSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hcblxuIjsKIAogICAgIHByaW50
IEYgIiNpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofVxuIiBpZiAkcGFyYW1ldGVyc3tn
dWFyZEZhY3RvcnlXaXRofTsKIAotICAgIGlmICgkd3JhcHBlckZhY3RvcnlUeXBlIGVxICJKUyIp
IHsKLSAgICAgICAgcHJpbnQgRiA8PEVORAorICAgIHByaW50IEYgPDxFTkQKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE0MjUsMzUgKzEyNDQsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogfQogIAogRU5ECi07Ci0gICAgfSBlbHNpZiAoJHdyYXBwZXJG
YWN0b3J5VHlwZSBlcSAiVjgiKSB7Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLSNpbmNsdWRlIDxW
OCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Lmg+Ci0jaW5jbHVkZSA8VjgkcGFyYW1ldGVy
c3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Lmg+Ci0jaW5jbHVkZSA8djguaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0gICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ7Ci0K
LSAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBmaW5kJHBhcmFtZXRlcnN7bmFtZXNwYWNlfVRhZ05h
bWVPZlY4VHlwZShjb25zdCBXcmFwcGVyVHlwZUluZm8qKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIoJHBhcmFtZXRlcnN7
bmFtZXNwYWNlfUVsZW1lbnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1EaXJlY3RXcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gVjgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDo6Y3JlYXRlV3JhcHBlcihlbGVtZW50LCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwotICAgIH0KLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1GYWxsYmFja1dyYXBwZXIoJHBhcmFt
ZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfSogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFY4JHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfTo6Y3JlYXRlV3Jh
cHBlcihlbGVtZW50LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwotICAgIH0KLX0KLUVORAot
OwotICAgIH0KKyAgICA7CiAKICAgICBwcmludCBGICIjZW5kaWYgLy8gJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAot
ICAgIHByaW50IEYgIiNlbmRpZiAvLyAkd3JhcHBlckZhY3RvcnlUeXBlJHBhcmFtZXRlcnN7bmFt
ZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG4iOworICAgIHByaW50IEYgIiNlbmRpZiAv
LyBKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuIjsKIAog
ICAgIGNsb3NlIEY7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRDYW52YXNNb2R1bGVTb3VyY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Q2FudmFzTW9kdWxlU291cmNlLmpzCShyZXZpc2lvbiAx
NDg0OTApCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRDYW52YXNN
b2R1bGVTb3VyY2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2OCArMjA2LDEyIEBAIFN0YWNr
VHJhY2UucHJvdG90eXBlID0gewogICovCiBTdGFja1RyYWNlLmNyZWF0ZSA9IGZ1bmN0aW9uKHN0
YWNrVHJhY2VMaW1pdCwgdG9wTW9zdEZ1bmN0aW9uVG9JZ25vcmUpCiB7Ci0gICAgaWYgKHR5cGVv
ZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgcmV0dXJu
IG5ldyBTdGFja1RyYWNlVjgoc3RhY2tUcmFjZUxpbWl0LCB0b3BNb3N0RnVuY3Rpb25Ub0lnbm9y
ZSB8fCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAvLyBGSVhNRTogU3VwcG9ydCBKU0MsIGFuZCBt
YXliZSBvdGhlciBicm93c2Vycy4KICAgICByZXR1cm4gbnVsbDsKIH0KIAogLyoqCiAgKiBAY29u
c3RydWN0b3IKLSAqIEBpbXBsZW1lbnRzIHtTdGFja1RyYWNlfQotICogQHBhcmFtIHtudW1iZXI9
fSBzdGFja1RyYWNlTGltaXQKLSAqIEBwYXJhbSB7RnVuY3Rpb249fSB0b3BNb3N0RnVuY3Rpb25U
b0lnbm9yZQotICogQHNlZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3Avdjgvd2lraS9KYXZhU2Ny
aXB0U3RhY2tUcmFjZUFwaQotICovCi1mdW5jdGlvbiBTdGFja1RyYWNlVjgoc3RhY2tUcmFjZUxp
bWl0LCB0b3BNb3N0RnVuY3Rpb25Ub0lnbm9yZSkKLXsKLSAgICBTdGFja1RyYWNlLmNhbGwodGhp
cyk7Ci0KLSAgICB2YXIgb2xkUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tU
cmFjZTsKLSAgICB2YXIgb2xkU3RhY2tUcmFjZUxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0
OwotICAgIGlmICh0eXBlb2Ygc3RhY2tUcmFjZUxpbWl0ID09PSAibnVtYmVyIikKLSAgICAgICAg
RXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gc3RhY2tUcmFjZUxpbWl0OwotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtPYmplY3R9IGVycm9yCi0gICAgICogQHBhcmFtIHtBcnJheS48Q2FsbFNpdGU+
fSBzdHJ1Y3R1cmVkU3RhY2tUcmFjZQotICAgICAqIEByZXR1cm4ge0FycmF5Ljx7c291cmNlVVJM
OiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciwgY29sdW1uTnVtYmVyOiBudW1iZXJ9Pn0KLSAg
ICAgKi8KLSAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IGZ1bmN0aW9uKGVycm9yLCBzdHJ1
Y3R1cmVkU3RhY2tUcmFjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmVkU3RhY2tU
cmFjZS5tYXAoZnVuY3Rpb24oY2FsbFNpdGUpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAg
ICAgICAgICAgICAgc291cmNlVVJMOiBjYWxsU2l0ZS5nZXRGaWxlTmFtZSgpLAotICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXI6IGNhbGxTaXRlLmdldExpbmVOdW1iZXIoKSwKLSAgICAgICAgICAg
ICAgICBjb2x1bW5OdW1iZXI6IGNhbGxTaXRlLmdldENvbHVtbk51bWJlcigpCi0gICAgICAgICAg
ICB9OwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICB2YXIgaG9sZGVyID0gLyoqIEB0eXBlIHt7
c3RhY2s6IEFycmF5Ljx7c291cmNlVVJMOiBzdHJpbmcsIGxpbmVOdW1iZXI6IG51bWJlciwgY29s
dW1uTnVtYmVyOiBudW1iZXJ9Pn19ICovICh7fSk7Ci0gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJh
Y2UoaG9sZGVyLCB0b3BNb3N0RnVuY3Rpb25Ub0lnbm9yZSB8fCBhcmd1bWVudHMuY2FsbGVlKTsK
LSAgICB0aGlzLl9zdGFja1RyYWNlID0gaG9sZGVyLnN0YWNrOwotCi0gICAgRXJyb3Iuc3RhY2tU
cmFjZUxpbWl0ID0gb2xkU3RhY2tUcmFjZUxpbWl0OwotICAgIEVycm9yLnByZXBhcmVTdGFja1Ry
YWNlID0gb2xkUHJlcGFyZVN0YWNrVHJhY2U7Ci19Ci0KLVN0YWNrVHJhY2VWOC5wcm90b3R5cGUg
PSB7Ci0gICAgLyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHtudW1iZXJ9IGlu
ZGV4Ci0gICAgICogQHJldHVybiB7e3NvdXJjZVVSTDogc3RyaW5nLCBsaW5lTnVtYmVyOiBudW1i
ZXIsIGNvbHVtbk51bWJlcjogbnVtYmVyfXx1bmRlZmluZWR9Ci0gICAgICovCi0gICAgY2FsbEZy
YW1lOiBmdW5jdGlvbihpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zdGFja1Ry
YWNlW2luZGV4XTsKLSAgICB9LAotCi0gICAgX19wcm90b19fOiBTdGFja1RyYWNlLnByb3RvdHlw
ZQotfQotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgogICovCiBmdW5jdGlvbiBDYWNoZSgpCiB7CkBA
IC0yMjc0LDcgKzIyMTgsNiBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRSZXNvdXJjZS5BdHRy
aWJ1CiAgICAgInRleHRBbGlnbiIsCiAgICAgInRleHRCYXNlbGluZSIsCiAgICAgImxpbmVEYXNo
T2Zmc2V0IiwKLSAgICAvLyBGSVhNRTogVGVtcG9yYXJ5IHByb3BlcnRpZXMgaW1wbGVtZW50ZWQg
aW4gSlNDLCBidXQgbm90IGluIFY4LgogICAgICJ3ZWJraXRMaW5lRGFzaCIsCiAgICAgIndlYmtp
dExpbmVEYXNoT2Zmc2V0IgogXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxNDg0OTApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNTEgKzMx
LDYgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLS8vIFY4IGJpbmRpbmdzIHVzZSB0aGUgQVJSQVlTSVpFX1VOU0FGRSBtYWNyby4g
VGhpcyBtYWNybyB3YXMgY29waWVkCi0vLyBmcm9tIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3Zp
ZXd2Yy9jaHJvbWUvdHJ1bmsvc3JjL2Jhc2UvYmFzaWN0eXBlcy5oCi0vLwotLy8gQVJSQVlTSVpF
X1VOU0FGRSBwZXJmb3JtcyBlc3NlbnRpYWxseSB0aGUgc2FtZSBjYWxjdWxhdGlvbiBhcyBhcnJh
eXNpemUsCi0vLyBidXQgY2FuIGJlIHVzZWQgb24gYW5vbnltb3VzIHR5cGVzIG9yIHR5cGVzIGRl
ZmluZWQgaW5zaWRlCi0vLyBmdW5jdGlvbnMuIEl0J3MgbGVzcyBzYWZlIHRoYW4gYXJyYXlzaXpl
IGFzIGl0IGFjY2VwdHMgc29tZQotLy8gKGFsdGhvdWdoIG5vdCBhbGwpIHBvaW50ZXJzLiBUaGVy
ZWZvcmUsIHlvdSBzaG91bGQgdXNlIGFycmF5c2l6ZQotLy8gd2hlbmV2ZXIgcG9zc2libGUuCi0v
LwotLy8gVGhlIGV4cHJlc3Npb24gQVJSQVlTSVpFX1VOU0FGRShhKSBpcyBhIGNvbXBpbGUtdGlt
ZSBjb25zdGFudCBvZiB0eXBlCi0vLyBzaXplX3QuCi0vLwotLy8gQVJSQVlTSVpFX1VOU0FGRSBj
YXRjaGVzIGEgZmV3IHR5cGUgZXJyb3JzLiBJZiB5b3Ugc2VlIGEgY29tcGlsZXIgZXJyb3IKLS8v
Ci0vLyAgICJ3YXJuaW5nOiBkaXZpc2lvbiBieSB6ZXJvIGluIC4uLiIKLS8vCi0vLyB3aGVuIHVz
aW5nIEFSUkFZU0laRV9VTlNBRkUsIHlvdSBhcmUgKHdyb25nZnVsbHkpIGdpdmluZyBpdCBhIHBv
aW50ZXIuCi0vLyBZb3Ugc2hvdWxkIG9ubHkgdXNlIEFSUkFZU0laRV9VTlNBRkUgb24gc3RhdGlj
YWxseSBhbGxvY2F0ZWQgYXJyYXlzLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgY29tbWVudHMgYXJl
IG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBhbmQgY2FuCi0vLyBiZSBpZ25vcmVkIGJ5
IHRoZSB1c2Vycy4KLS8vCi0vLyBBUlJBWVNJWkVfVU5TQUZFKGFycikgd29ya3MgYnkgaW5zcGVj
dGluZyBzaXplb2YoYXJyKSAodGhlICMgb2YgYnl0ZXMgaW4KLS8vIHRoZSBhcnJheSkgYW5kIHNp
emVvZigqKGFycikpICh0aGUgIyBvZiBieXRlcyBpbiBvbmUgYXJyYXkKLS8vIGVsZW1lbnQpLiBJ
ZiB0aGUgZm9ybWVyIGlzIGRpdmlzaWJsZSBieSB0aGUgbGF0dGVyLCBwZXJoYXBzIGFyciBpcwot
Ly8gaW5kZWVkIGFuIGFycmF5LCBpbiB3aGljaCBjYXNlIHRoZSBkaXZpc2lvbiByZXN1bHQgaXMg
dGhlICMgb2YKLS8vIGVsZW1lbnRzIGluIHRoZSBhcnJheS4gT3RoZXJ3aXNlLCBhcnIgY2Fubm90
IHBvc3NpYmx5IGJlIGFuIGFycmF5LAotLy8gYW5kIHdlIGdlbmVyYXRlIGEgY29tcGlsZXIgZXJy
b3IgdG8gcHJldmVudCB0aGUgY29kZSBmcm9tCi0vLyBjb21waWxpbmcuCi0vLwotLy8gU2luY2Ug
dGhlIHNpemUgb2YgYm9vbCBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLCB3ZSBuZWVkIHRvIGNh
c3QKLS8vICEoc2l6ZW9mKGEpICYgc2l6ZW9mKCooYSkpKSB0byBzaXplX3QgaW4gb3JkZXIgdG8g
ZW5zdXJlIHRoZSBmaW5hbAotLy8gcmVzdWx0IGhhcyB0eXBlIHNpemVfdC4KLS8vCi0vLyBUaGlz
IG1hY3JvIGlzIG5vdCBwZXJmZWN0IGFzIGl0IHdyb25nZnVsbHkgYWNjZXB0cyBjZXJ0YWluCi0v
LyBwb2ludGVycywgbmFtZWx5IHdoZXJlIHRoZSBwb2ludGVyIHNpemUgaXMgZGl2aXNpYmxlIGJ5
IHRoZSBwb2ludGVlCi0vLyBzaXplLiBTaW5jZSBhbGwgb3VyIGNvZGUgaGFzIHRvIGdvIHRocm91
Z2ggYSAzMi1iaXQgY29tcGlsZXIsCi0vLyB3aGVyZSBhIHBvaW50ZXIgaXMgNCBieXRlcywgdGhp
cyBtZWFucyBhbGwgcG9pbnRlcnMgdG8gYSB0eXBlIHdob3NlCi0vLyBzaXplIGlzIDMgb3IgZ3Jl
YXRlciB0aGFuIDQgd2lsbCBiZSAocmlnaHRlb3VzbHkpIHJlamVjdGVkLgotCi0jZGVmaW5lIEFS
UkFZU0laRV9VTlNBRkUoYSkgXAotICAoKHNpemVvZihhKSAvIHNpemVvZigqKGEpKSkgLyBcCi0g
ICBzdGF0aWNfY2FzdDxzaXplX3Q+KCEoc2l6ZW9mKGEpICUgc2l6ZW9mKCooYSkpKSkpCi0KLQog
dHlwZWRlZiBzdHJ1Y3QgTlBPYmplY3QgTlBPYmplY3Q7CiB0eXBlZGVmIHN0cnVjdCBfTlBQIE5Q
UF90OwogdHlwZWRlZiBOUFBfdCogTlBQOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pv
b21BbmRQYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5oCShyZXZpc2lvbiAxNDg0OTApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBh
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIFNWR1pv
b21BbmRQYW5UeXBlIHpvb21BbmRQYW4oKSBjb25zdCB7IHJldHVybiBTVkdab29tQW5kUGFuVW5r
bm93bjsgfQogCi0gICAgLy8gVGhlc2UgbWV0aG9kcyBvbmx5IGV4aXN0IHRvIGFsbG93IHVzIHRv
IGNvbXBpbGUgVjgvSlNTVkdab29tQW5kUGFuLiouCisgICAgLy8gVGhlc2UgbWV0aG9kcyBvbmx5
IGV4aXN0IHRvIGFsbG93IHVzIHRvIGNvbXBpbGUgSlNTVkdab29tQW5kUGFuLiouCiAgICAgLy8g
VGhlc2UgYXJlIG5ldmVyIGNhbGxlZCwgYW5kIHRodXMgQVNTRVJUX05PVF9SRUFDSEVELgogICAg
IHZvaWQgcmVmKCk7CiAgICAgdm9pZCBkZXJlZigpOwo=
</data>
<flag name="review"
          id="220058"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>