<?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>101314</bug_id>
          
          <creation_ts>2012-11-05 23:55:59 -0800</creation_ts>
          <short_desc>Indentation of JSArray.h is wrong</short_desc>
          <delta_ts>2012-11-06 11:14:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759318</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-05 23:55:59 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759323</commentid>
    <comment_count>1</comment_count>
      <attachid>172499</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-06 00:02:09 -0800</bug_when>
    <thetext>Created attachment 172499
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759342</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 00:27:24 -0800</bug_when>
    <thetext>Attachment 172499 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSArray.h:225:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759808</commentid>
    <comment_count>3</comment_count>
      <attachid>172499</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-06 10:09:07 -0800</bug_when>
    <thetext>Comment on attachment 172499
the patch

rs=me, assuming that this was a single Cmd+[ (or equivalent).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759882</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-06 11:06:58 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172499 [details])
&gt; rs=me, assuming that this was a single Cmd+[ (or equivalent).

Yup, it was.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759895</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-06 11:11:34 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/133645

I just realized that I wrote that it was &quot;Reviewed by Alexey&quot; rather than &quot;Rubber stamped by Alexey&quot;.  I will fix the changelog in a separate commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759897</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-06 11:14:47 -0800</bug_when>
    <thetext>Changelog fixed in http://trac.webkit.org/changeset/133646</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172499</attachid>
            <date>2012-11-06 00:02:09 -0800</date>
            <delta_ts>2012-11-06 10:09:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>indent.patch</filename>
            <type>text/plain</type>
            <size>24096</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNTY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTExLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SW5kZW50YXRpb24gb2YgSlNBcnJheS5oIGlzIHdyb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IHJlbW92aW5nIHRoZSBpbmRlbnRhdGlvbiBp
bnNpZGUgdGhlIG5hbWVzcGFjZSBib2R5LgorCisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6
CisKIDIwMTItMTEtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBERkcgc2hvdWxkIG5vdCBmYWxsIGRvd24gdG8gcGF0Y2hhYmxlIEdldEJ5SWQganVzdCBiZWNh
dXNlIGEgcHJvdG90eXBlIGhhZCB0aGluZ3MgYWRkZWQgdG8gaXQKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEzMzU2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcz
ICsyNywyNzMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBKU0FycmF5OwotICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK2NsYXNzIEpTQXJyYXk7CitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewotICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwot
ICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwot
Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKLQot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgSlNBcnJheShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSkKLSAg
ICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGJ1dHRl
cmZseSkKLSAgICAgICAgewotICAgICAgICB9CitjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKKyAgICBmcmllbmQgY2xhc3MgSklUOworCitwdWJsaWM6
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKK3Byb3RlY3RlZDoKKyAgICBl
eHBsaWNpdCBKU0FycmF5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5KQorICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qo
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpCisgICAgeworICAgIH0KIAotICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCk7CitwdWJsaWM6CisgICAgc3RhdGlj
IEpTQXJyYXkqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBpbml0
aWFsTGVuZ3RoID0gMCk7CiAKLSAgICAgICAgLy8gdHJ5Q3JlYXRlVW5pbml0aWFsaXplZCBpcyB1
c2VkIGZvciBmYXN0IGNvbnN0cnVjdGlvbiBvZiBhcnJheXMgd2hvc2Ugc2l6ZSBhbmQKLSAgICAg
ICAgLy8gY29udGVudHMgYXJlIGtub3duIGF0IHRpbWUgb2YgY3JlYXRpb24uIENsaWVudHMgb2Yg
dGhpcyBpbnRlcmZhY2UgbXVzdDoKLSAgICAgICAgLy8gICAtIG51bGwtY2hlY2sgdGhlIHJlc3Vs
dCAoaW5kaWNhdGluZyBvdXQgb2YgbWVtb3J5LCBvciBvdGhlcndpc2UgdW5hYmxlIHRvIGFsbG9j
YXRlIHZlY3RvcikuCi0gICAgICAgIC8vICAgLSBjYWxsICdpbml0aWFsaXplSW5kZXgnIGZvciBh
bGwgcHJvcGVydGllcyBpbiBzZXF1ZW5jZSwgZm9yIDAgPD0gaSA8IGluaXRpYWxMZW5ndGguCi0g
ICAgICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOworICAgIC8vIHRyeUNyZWF0
ZVVuaW5pdGlhbGl6ZWQgaXMgdXNlZCBmb3IgZmFzdCBjb25zdHJ1Y3Rpb24gb2YgYXJyYXlzIHdo
b3NlIHNpemUgYW5kCisgICAgLy8gY29udGVudHMgYXJlIGtub3duIGF0IHRpbWUgb2YgY3JlYXRp
b24uIENsaWVudHMgb2YgdGhpcyBpbnRlcmZhY2UgbXVzdDoKKyAgICAvLyAgIC0gbnVsbC1jaGVj
ayB0aGUgcmVzdWx0IChpbmRpY2F0aW5nIG91dCBvZiBtZW1vcnksIG9yIG90aGVyd2lzZSB1bmFi
bGUgdG8gYWxsb2NhdGUgdmVjdG9yKS4KKyAgICAvLyAgIC0gY2FsbCAnaW5pdGlhbGl6ZUluZGV4
JyBmb3IgYWxsIHByb3BlcnRpZXMgaW4gc2VxdWVuY2UsIGZvciAwIDw9IGkgPCBpbml0aWFsTGVu
Z3RoLgorICAgIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVkKEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpOwogCi0gICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImLCBib29sIHRocm93
RXhjZXB0aW9uKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNj
cmlwdG9yJiwgYm9vbCB0aHJvd0V4Y2VwdGlvbik7CiAKLSAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVy
dHlTbG90Jik7Ci0gICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7
CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKIAotICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAgICAgICAgIAotICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBnZXRBcnJheUxlbmd0aCgpOyB9Ci0gICAgICAgIC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJy
YXlzLCBidXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KLSAgICAgICAg
Ym9vbCBzZXRMZW5ndGgoRXhlY1N0YXRlKiwgdW5zaWduZWQsIGJvb2wgdGhyb3dFeGNlcHRpb24g
PSBmYWxzZSk7Ci0KLSAgICAgICAgdm9pZCBzb3J0KEV4ZWNTdGF0ZSopOwotICAgICAgICB2b2lk
IHNvcnQoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYpOwotICAgICAgICB2b2lkIHNvcnROdW1lcmljKEV4ZWNTdGF0ZSosIEpTVmFs
dWUgY29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmKTsKLQotICAgICAg
ICB2b2lkIHB1c2goRXhlY1N0YXRlKiwgSlNWYWx1ZSk7Ci0gICAgICAgIEpTVmFsdWUgcG9wKEV4
ZWNTdGF0ZSopOwotCi0gICAgICAgIGVudW0gU2hpZnRDb3VudE1vZGUgewotICAgICAgICAgICAg
Ly8gVGhpcyBmb3JtIG9mIHNoaWZ0IGhpbnRzIHRoYXQgd2UncmUgZG9pbmcgcXVldWVpbmcuIFdp
dGggdGhpcyBhc3N1bXB0aW9uIGluIGhhbmQsCi0gICAgICAgICAgICAvLyB3ZSBjb252ZXJ0IHRv
IEFycmF5U3RvcmFnZSwgd2hpY2ggaGFzIHF1ZXVlIG9wdGltaXphdGlvbnMuCi0gICAgICAgICAg
ICBTaGlmdENvdW50Rm9yU2hpZnQsCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gZ2V0QXJyYXlMZW5ndGgoKTsgfQorICAgIC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBi
dXQgbm90IGlmIGl0IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KKyAgICBib29sIHNldExl
bmd0aChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgYm9vbCB0aHJvd0V4Y2VwdGlvbiA9IGZhbHNlKTsK
KworICAgIHZvaWQgc29ydChFeGVjU3RhdGUqKTsKKyAgICB2b2lkIHNvcnQoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBjb25zdCBDYWxsRGF0YSYpOworICAg
IHZvaWQgc29ydE51bWVyaWMoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENh
bGxUeXBlLCBjb25zdCBDYWxsRGF0YSYpOworCisgICAgdm9pZCBwdXNoKEV4ZWNTdGF0ZSosIEpT
VmFsdWUpOworICAgIEpTVmFsdWUgcG9wKEV4ZWNTdGF0ZSopOworCisgICAgZW51bSBTaGlmdENv
dW50TW9kZSB7CisgICAgICAgIC8vIFRoaXMgZm9ybSBvZiBzaGlmdCBoaW50cyB0aGF0IHdlJ3Jl
IGRvaW5nIHF1ZXVlaW5nLiBXaXRoIHRoaXMgYXNzdW1wdGlvbiBpbiBoYW5kLAorICAgICAgICAv
LyB3ZSBjb252ZXJ0IHRvIEFycmF5U3RvcmFnZSwgd2hpY2ggaGFzIHF1ZXVlIG9wdGltaXphdGlv
bnMuCisgICAgICAgIFNoaWZ0Q291bnRGb3JTaGlmdCwKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgLy8gVGhpcyBmb3JtIG9mIHNoaWZ0IGhpbnRzIHRoYXQgd2UncmUganVzdCBkb2luZyBjYXJl
IGFuZCBmZWVkaW5nIG9uIGFuIGFycmF5IHRoYXQKLSAgICAgICAgICAgIC8vIGlzIHByb2JhYmx5
IHR5cGljYWxseSB1c2VkIGZvciBvcmRpbmFyeSBhY2Nlc3Nlcy4gV2l0aCB0aGlzIGFzc3VtcHRp
b24gaW4gaGFuZCwKLSAgICAgICAgICAgIC8vIHdlIHRyeSB0byBwcmVzZXJ2ZSB3aGF0ZXZlciBp
bmRleGluZyB0eXBlIGl0IGhhcyBhbHJlYWR5LgotICAgICAgICAgICAgU2hpZnRDb3VudEZvclNw
bGljZQotICAgICAgICB9OwotCi0gICAgICAgIGJvb2wgc2hpZnRDb3VudEZvclNoaWZ0KEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShzdGFydElu
ZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPmdsb2JhbERhdGEoKSkpOwotICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgc2hpZnRDb3VudEZvclNwbGljZShFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoZXhlYywgc3RhcnRJbmRl
eCwgY291bnQpOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlPFNoaWZ0Q291bnRNb2RlIHNo
aWZ0Q291bnRNb2RlPgotICAgICAgICBib29sIHNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjLCB1
bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKLSAgICAgICAgewotICAgICAgICAg
ICAgc3dpdGNoIChzaGlmdENvdW50TW9kZSkgewotICAgICAgICAgICAgY2FzZSBTaGlmdENvdW50
Rm9yU2hpZnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNoaWZ0Q291bnRGb3JTaGlmdChleGVj
LCBzdGFydEluZGV4LCBjb3VudCk7Ci0gICAgICAgICAgICBjYXNlIFNoaWZ0Q291bnRGb3JTcGxp
Y2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNoaWZ0Q291bnRGb3JTcGxpY2UoZXhlYywgc3Rh
cnRJbmRleCwgY291bnQpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBD
UkFTSCgpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCB1bnNoaWZ0Q291bnRGb3JTaGlmdChFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShleGVj
LCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPmdsb2JhbERhdGEo
KSkpOwotICAgICAgICB9Ci0gICAgICAgIGJvb2wgdW5zaGlmdENvdW50Rm9yU3BsaWNlKEV4ZWNT
dGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiB1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdUeXBlKGV4
ZWMsIHN0YXJ0SW5kZXgsIGNvdW50KTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTxTaGlm
dENvdW50TW9kZSBzaGlmdENvdW50TW9kZT4KLSAgICAgICAgYm9vbCB1bnNoaWZ0Q291bnQoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc3dpdGNoIChzaGlmdENvdW50TW9kZSkgewotICAgICAgICAgICAg
Y2FzZSBTaGlmdENvdW50Rm9yU2hpZnQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVuc2hpZnRD
b3VudEZvclNoaWZ0KGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50KTsKLSAgICAgICAgICAgIGNhc2Ug
U2hpZnRDb3VudEZvclNwbGljZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50
Rm9yU3BsaWNlKGV4ZWMsIHN0YXJ0SW5kZXgsIGNvdW50KTsKLSAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGZpbGxBcmdMaXN0KEV4
ZWNTdGF0ZSosIE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7Ci0gICAgICAgIHZvaWQgY29weVRvQXJn
dW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGxlbmd0aCk7Ci0KLSAgICAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUsIElu
ZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvLCBpbmRleGluZ1R5cGUp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
LSAgICAgICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgZGVs
ZXRlUHJvcGVydHkoSlNDZWxsKiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lKTsKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0eU5hbWVz
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgYm9vbCBpc0xlbmd0aFdyaXRhYmxlKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYXJyYXlTdG9yYWdl
T3JOdWxsKCk7Ci0gICAgICAgICAgICBpZiAoIXN0b3JhZ2UpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtYXAgPSBzdG9yYWdl
LT5tX3NwYXJzZU1hcC5nZXQoKTsKLSAgICAgICAgICAgIHJldHVybiAhbWFwIHx8ICFtYXAtPmxl
bmd0aElzUmVhZE9ubHkoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBzaGlm
dENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAgIGJvb2wgc2hpZnRDb3VudFdpdGhBcnJheVN0b3Jh
Z2UodW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSopOwot
Ci0gICAgICAgIGJvb2wgdW5zaGlmdENvdW50V2l0aEFueUluZGV4aW5nVHlwZShFeGVjU3RhdGUq
LCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAgIGJvb2wgdW5z
aGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBzdGFydEluZGV4
LCB1bnNpZ25lZCBjb3VudCwgQXJyYXlTdG9yYWdlKik7Ci0gICAgICAgIGJvb2wgdW5zaGlmdENv
dW50U2xvd0Nhc2UoSlNHbG9iYWxEYXRhJiwgYm9vbCwgdW5zaWduZWQpOwotCi0gICAgICAgIHRl
bXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+Ci0gICAgICAgIHZvaWQgc29ydE51bWVy
aWNWZWN0b3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBj
b25zdCBDYWxsRGF0YSYpOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8SW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZT4KLSAgICAgICAgdm9pZCBzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdGF0
ZSosIFdyaXRlQmFycmllcjxVbmtub3duPiogYmVnaW4sIHVuc2lnbmVkIHJlbGV2YW50TGVuZ3Ro
KTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGU+
Ci0gICAgICAgIHZvaWQgc29ydFZlY3RvcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5j
dGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJik7Ci0KLSAgICAgICAgYm9vbCBzZXRMZW5n
dGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG5ld0xlbmd0aCwgYm9vbCB0
aHJvd0V4Y2VwdGlvbiwgQXJyYXlTdG9yYWdlKik7Ci0gICAgICAgIHZvaWQgc2V0TGVuZ3RoV3Jp
dGFibGUoRXhlY1N0YXRlKiwgYm9vbCB3cml0YWJsZSk7Ci0gICAgICAgIAotICAgICAgICB0ZW1w
bGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgotICAgICAgICB2b2lkIGNvbXBhY3RGb3JT
b3J0aW5nKHVuc2lnbmVkJiBudW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZhbnRMZW5ndGgp
OworICAgICAgICAvLyBUaGlzIGZvcm0gb2Ygc2hpZnQgaGludHMgdGhhdCB3ZSdyZSBqdXN0IGRv
aW5nIGNhcmUgYW5kIGZlZWRpbmcgb24gYW4gYXJyYXkgdGhhdAorICAgICAgICAvLyBpcyBwcm9i
YWJseSB0eXBpY2FsbHkgdXNlZCBmb3Igb3JkaW5hcnkgYWNjZXNzZXMuIFdpdGggdGhpcyBhc3N1
bXB0aW9uIGluIGhhbmQsCisgICAgICAgIC8vIHdlIHRyeSB0byBwcmVzZXJ2ZSB3aGF0ZXZlciBp
bmRleGluZyB0eXBlIGl0IGhhcyBhbHJlYWR5LgorICAgICAgICBTaGlmdENvdW50Rm9yU3BsaWNl
CiAgICAgfTsKIAotICAgIGlubGluZSBCdXR0ZXJmbHkqIGNyZWF0ZUNvbnRpZ3VvdXNBcnJheUJ1
dHRlcmZseShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBi
b29sIHNoaWZ0Q291bnRGb3JTaGlmdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5k
ZXgsIHVuc2lnbmVkIGNvdW50KQogICAgIHsKLSAgICAgICAgSW5kZXhpbmdIZWFkZXIgaGVhZGVy
OwotICAgICAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKHN0ZDo6bWF4KGxlbmd0aCwgQkFTRV9W
RUNUT1JfTEVOKSk7Ci0gICAgICAgIGhlYWRlci5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKLSAg
ICAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBCdXR0ZXJmbHk6OmNyZWF0ZSgKLSAgICAgICAgICAg
IGdsb2JhbERhdGEsIDAsIDAsIHRydWUsIGhlYWRlciwgaGVhZGVyLnZlY3Rvckxlbmd0aCgpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IHJldHVybiBzaGlmdENvdW50V2l0aEFycmF5U3RvcmFnZShzdGFydEluZGV4LCBjb3VudCwgZW5z
dXJlQXJyYXlTdG9yYWdlKGV4ZWMtPmdsb2JhbERhdGEoKSkpOwogICAgIH0KLQotICAgIGlubGlu
ZSBCdXR0ZXJmbHkqIGNyZWF0ZUFycmF5QnV0dGVyZmx5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkKKyAgICBib29sIHNoaWZ0Q291bnRGb3JTcGxpY2Uo
RXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzdGFydEluZGV4LCB1bnNpZ25lZCBjb3VudCkKICAg
ICB7Ci0gICAgICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUoCi0g
ICAgICAgICAgICBnbG9iYWxEYXRhLCAwLCAwLCB0cnVlLCBiYXNlSW5kZXhpbmdIZWFkZXJGb3JB
cnJheShpbml0aWFsTGVuZ3RoKSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKEJBU0VfVkVDVE9SX0xF
TikpOwotICAgICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3Rv
cmFnZSgpOwotICAgICAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyA9IDA7Ci0gICAgICAgIHN0b3Jh
Z2UtPm1fc3BhcnNlTWFwLmNsZWFyKCk7Ci0gICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3IgPSAwOwotICAgICAgICByZXR1cm4gYnV0dGVyZmx5OworICAgICAgICByZXR1cm4gc2hp
ZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoZXhlYywgc3RhcnRJbmRleCwgY291bnQpOwogICAg
IH0KLQotICAgIEJ1dHRlcmZseSogY3JlYXRlQXJyYXlCdXR0ZXJmbHlJbkRpY3Rpb25hcnlJbmRl
eGluZ01vZGUoSlNHbG9iYWxEYXRhJiwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCk7Ci0KLSAgICBp
bmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCisgICAgdGVtcGxh
dGU8U2hpZnRDb3VudE1vZGUgc2hpZnRDb3VudE1vZGU+CisgICAgYm9vbCBzaGlmdENvdW50KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpCiAgICAg
ewotICAgICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKLSAgICAgICAgaWYgKExJS0VMWShzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMpKSB7Ci0gICAgICAg
ICAgICBidXR0ZXJmbHkgPSBjcmVhdGVDb250aWd1b3VzQXJyYXlCdXR0ZXJmbHkoZ2xvYmFsRGF0
YSwgaW5pdGlhbExlbmd0aCk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5pdGlhbExlbmd0aCA8IE1J
Tl9TUEFSU0VfQVJSQVlfSU5ERVgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNT
RVJUKAotICAgICAgICAgICAgICAgIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlX
aXRoU2xvd1B1dEFycmF5U3RvcmFnZQotICAgICAgICAgICAgICAgIHx8IChpbml0aWFsTGVuZ3Ro
ICYmIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSk7
Ci0gICAgICAgICAgICBidXR0ZXJmbHkgPSBjcmVhdGVBcnJheUJ1dHRlcmZseShnbG9iYWxEYXRh
LCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgc3dpdGNoIChzaGlmdENvdW50TW9kZSkgeworICAg
ICAgICBjYXNlIFNoaWZ0Q291bnRGb3JTaGlmdDoKKyAgICAgICAgICAgIHJldHVybiBzaGlmdENv
dW50Rm9yU2hpZnQoZXhlYywgc3RhcnRJbmRleCwgY291bnQpOworICAgICAgICBjYXNlIFNoaWZ0
Q291bnRGb3JTcGxpY2U6CisgICAgICAgICAgICByZXR1cm4gc2hpZnRDb3VudEZvclNwbGljZShl
eGVjLCBzdGFydEluZGV4LCBjb3VudCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBD
UkFTSCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIEpT
QXJyYXkqIGFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFs
RGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7Ci0g
ICAgICAgIGFycmF5LT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICAgICAgcmV0dXJu
IGFycmF5OwogICAgIH0KLQotICAgIGlubGluZSBKU0FycmF5KiBKU0FycmF5Ojp0cnlDcmVhdGVV
bmluaXRpYWxpemVkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCi0gICAgewotICAgICAgICB1bnNpZ25lZCB2ZWN0
b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIGluaXRpYWxMZW5ndGgpOwotICAg
ICAgICBpZiAodmVjdG9yTGVuZ3RoID4gTUFYX1NUT1JBR0VfVkVDVE9SX0xFTkdUSCkKLSAgICAg
ICAgICAgIHJldHVybiAwOwogICAgICAgICAKLSAgICAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7
Ci0gICAgICAgIGlmIChMSUtFTFkoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdp
dGhDb250aWd1b3VzKSkgewotICAgICAgICAgICAgCi0gICAgICAgICAgICB2b2lkKiB0ZW1wOwot
ICAgICAgICAgICAgaWYgKCFnbG9iYWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKEJ1dHRl
cmZseTo6dG90YWxTaXplKDAsIDAsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSkpLCAmdGVtcCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAg
ICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmZyb21CYXNlKHRlbXAsIDAsIDApOwotICAgICAgICAg
ICAgYnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKLSAgICAgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGluaXRpYWxMZW5ndGgpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgdm9pZCogdGVtcDsKLSAgICAgICAgICAgIGlmICghZ2xvYmFsRGF0
YS5oZWFwLnRyeUFsbG9jYXRlU3RvcmFnZShCdXR0ZXJmbHk6OnRvdGFsU2l6ZSgwLCAwLCB0cnVl
LCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksICZ0ZW1wKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6ZnJv
bUJhc2UodGVtcCwgMCwgMCk7Ci0gICAgICAgICAgICAqYnV0dGVyZmx5LT5pbmRleGluZ0hlYWRl
cigpID0gaW5kZXhpbmdIZWFkZXJGb3JBcnJheShpbml0aWFsTGVuZ3RoLCB2ZWN0b3JMZW5ndGgp
OwotICAgICAgICAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYnV0dGVyZmx5LT5hcnJheVN0
b3JhZ2UoKTsKLSAgICAgICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzID0gMDsKLSAgICAgICAg
ICAgIHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmNsZWFyKCk7Ci0gICAgICAgICAgICBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yID0gaW5pdGlhbExlbmd0aDsKKyAgICBib29sIHVuc2hpZnRDb3Vu
dEZvclNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQg
Y291bnQpCisgICAgeworICAgICAgICByZXR1cm4gdW5zaGlmdENvdW50V2l0aEFycmF5U3RvcmFn
ZShleGVjLCBzdGFydEluZGV4LCBjb3VudCwgZW5zdXJlQXJyYXlTdG9yYWdlKGV4ZWMtPmdsb2Jh
bERhdGEoKSkpOworICAgIH0KKyAgICBib29sIHVuc2hpZnRDb3VudEZvclNwbGljZShFeGVjU3Rh
dGUqIGV4ZWMsIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoZXhlYywgc3RhcnRJ
bmRleCwgY291bnQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTxTaGlmdENvdW50TW9kZSBzaGlmdENv
dW50TW9kZT4KKyAgICBib29sIHVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChzaGlm
dENvdW50TW9kZSkgeworICAgICAgICBjYXNlIFNoaWZ0Q291bnRGb3JTaGlmdDoKKyAgICAgICAg
ICAgIHJldHVybiB1bnNoaWZ0Q291bnRGb3JTaGlmdChleGVjLCBzdGFydEluZGV4LCBjb3VudCk7
CisgICAgICAgIGNhc2UgU2hpZnRDb3VudEZvclNwbGljZToKKyAgICAgICAgICAgIHJldHVybiB1
bnNoaWZ0Q291bnRGb3JTcGxpY2UoZXhlYywgc3RhcnRJbmRleCwgY291bnQpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0FycmF5KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgYnV0dGVyZmx5KTsKLSAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0
aW9uKGdsb2JhbERhdGEpOwotICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgfQogCi0gICAgSlNB
cnJheSogYXNBcnJheShKU1ZhbHVlKTsKKyAgICB2b2lkIGZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSos
IE1hcmtlZEFyZ3VtZW50QnVmZmVyJik7CisgICAgdm9pZCBjb3B5VG9Bcmd1bWVudHMoRXhlY1N0
YXRlKiwgQ2FsbEZyYW1lKiwgdWludDMyX3QgbGVuZ3RoKTsKIAotICAgIGlubGluZSBKU0FycmF5
KiBhc0FycmF5KEpTQ2VsbCogY2VsbCkKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7
Ci0gICAgICAgIEFTU0VSVChjZWxsLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSk7Ci0gICAg
ICAgIHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbywgaW5kZXhpbmdUeXBlKTsKICAg
ICB9CisgICAgICAgIAorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGljIHZvaWQg
cHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVy
dHlTbG90Jik7CiAKLSAgICBpbmxpbmUgSlNBcnJheSogYXNBcnJheShKU1ZhbHVlIHZhbHVlKQor
ICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5k
ZXhQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkm
LCBFbnVtZXJhdGlvbk1vZGUpOworCitwcml2YXRlOgorICAgIGJvb2wgaXNMZW5ndGhXcml0YWJs
ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYXNBcnJheSh2YWx1ZS5hc0NlbGwoKSk7CisgICAg
ICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGFycmF5U3RvcmFnZU9yTnVsbCgpOworICAgICAg
ICBpZiAoIXN0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgU3BhcnNl
QXJyYXlWYWx1ZU1hcCogbWFwID0gc3RvcmFnZS0+bV9zcGFyc2VNYXAuZ2V0KCk7CisgICAgICAg
IHJldHVybiAhbWFwIHx8ICFtYXAtPmxlbmd0aElzUmVhZE9ubHkoKTsKICAgICB9CisgICAgICAg
IAorICAgIGJvb2wgc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRlKiwgdW5z
aWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQpOworICAgIGJvb2wgc2hpZnRDb3VudFdp
dGhBcnJheVN0b3JhZ2UodW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5
U3RvcmFnZSopOwogCi0gICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyBy
ZXR1cm4gY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQotICAgIGlubGlu
ZSBib29sIGlzSlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0Fy
cmF5KHYuYXNDZWxsKCkpOyB9CisgICAgYm9vbCB1bnNoaWZ0Q291bnRXaXRoQW55SW5kZXhpbmdU
eXBlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIHN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNvdW50KTsKKyAg
ICBib29sIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwgdW5zaWduZWQg
c3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSopOworICAgIGJvb2wgdW5z
aGlmdENvdW50U2xvd0Nhc2UoSlNHbG9iYWxEYXRhJiwgYm9vbCwgdW5zaWduZWQpOwogCi0gICAg
aW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBhcnJheVN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgdmFsdWVzKQotICAgIHsKLSAgICAgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSB2YWx1ZXMuc2l6ZSgpOwotICAgICAgICBKU0FycmF5KiBhcnJheSA9
IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoZ2xvYmFsRGF0YSwgYXJyYXlTdHJ1Y3R1
cmUsIGxlbmd0aCk7Ci0KLSAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSB0aHJv
dyBhbiBvdXQgb2YgbWVtb3J5IGVycm9yIGhlcmUsIGJ1dAotICAgICAgICAvLyB3aGVuIG1ha2lu
ZyB0aGlzIGNoYW5nZSB3ZSBzaG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCi0g
ICAgICAgIC8vIGZ1bmN0aW9uIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhbiBleGNlcHRpb24gYmVp
bmcgdGhyb3duIGZyb20gaGVyZS4KLSAgICAgICAgaWYgKCFhcnJheSkKLSAgICAgICAgICAgIENS
QVNIKCk7CisgICAgdGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KKyAgICB2b2lk
IHNvcnROdW1lcmljVmVjdG9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29tcGFyZUZ1bmN0aW9uLCBD
YWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmKTsKKyAgICAgICAgCisgICAgdGVtcGxhdGU8SW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZT4KKyAgICB2b2lkIHNvcnRDb21wYWN0ZWRWZWN0b3IoRXhlY1N0
YXRlKiwgV3JpdGVCYXJyaWVyPFVua25vd24+KiBiZWdpbiwgdW5zaWduZWQgcmVsZXZhbnRMZW5n
dGgpOworICAgICAgICAKKyAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgor
ICAgIHZvaWQgc29ydFZlY3RvcihFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwg
Q2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJik7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgYXJyYXktPmluaXRpYWxpemVJbmRleChn
bG9iYWxEYXRhLCBpLCB2YWx1ZXMuYXQoaSkpOwotICAgICAgICByZXR1cm4gYXJyYXk7CisgICAg
Ym9vbCBzZXRMZW5ndGhXaXRoQXJyYXlTdG9yYWdlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG5ld0xl
bmd0aCwgYm9vbCB0aHJvd0V4Y2VwdGlvbiwgQXJyYXlTdG9yYWdlKik7CisgICAgdm9pZCBzZXRM
ZW5ndGhXcml0YWJsZShFeGVjU3RhdGUqLCBib29sIHdyaXRhYmxlKTsKKyAgICAgICAgCisgICAg
dGVtcGxhdGU8SW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZT4KKyAgICB2b2lkIGNvbXBhY3RGb3JT
b3J0aW5nKHVuc2lnbmVkJiBudW1EZWZpbmVkLCB1bnNpZ25lZCYgbmV3UmVsZXZhbnRMZW5ndGgp
OworfTsKKworaW5saW5lIEJ1dHRlcmZseSogY3JlYXRlQ29udGlndW91c0FycmF5QnV0dGVyZmx5
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIEluZGV4
aW5nSGVhZGVyIGhlYWRlcjsKKyAgICBoZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKHN0ZDo6bWF4KGxl
bmd0aCwgQkFTRV9WRUNUT1JfTEVOKSk7CisgICAgaGVhZGVyLnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOworICAgIEJ1dHRlcmZseSogcmVzdWx0ID0gQnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAg
IGdsb2JhbERhdGEsIDAsIDAsIHRydWUsIGhlYWRlciwgaGVhZGVyLnZlY3Rvckxlbmd0aCgpICog
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW5saW5l
IEJ1dHRlcmZseSogY3JlYXRlQXJyYXlCdXR0ZXJmbHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKQoreworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
QnV0dGVyZmx5OjpjcmVhdGUoCisgICAgICAgIGdsb2JhbERhdGEsIDAsIDAsIHRydWUsIGJhc2VJ
bmRleGluZ0hlYWRlckZvckFycmF5KGluaXRpYWxMZW5ndGgpLCBBcnJheVN0b3JhZ2U6OnNpemVG
b3IoQkFTRV9WRUNUT1JfTEVOKSk7CisgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gYnV0dGVy
Zmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICBzdG9yYWdlLT5tX2luZGV4QmlhcyA9IDA7CisgICAg
c3RvcmFnZS0+bV9zcGFyc2VNYXAuY2xlYXIoKTsKKyAgICBzdG9yYWdlLT5tX251bVZhbHVlc0lu
VmVjdG9yID0gMDsKKyAgICByZXR1cm4gYnV0dGVyZmx5OworfQorCitCdXR0ZXJmbHkqIGNyZWF0
ZUFycmF5QnV0dGVyZmx5SW5EaWN0aW9uYXJ5SW5kZXhpbmdNb2RlKEpTR2xvYmFsRGF0YSYsIHVu
c2lnbmVkIGluaXRpYWxMZW5ndGgpOworCitpbmxpbmUgSlNBcnJheSogSlNBcnJheTo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGgpCit7CisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAgaWYgKExJ
S0VMWShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMpKSB7
CisgICAgICAgIGJ1dHRlcmZseSA9IGNyZWF0ZUNvbnRpZ3VvdXNBcnJheUJ1dHRlcmZseShnbG9i
YWxEYXRhLCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgQVNTRVJUKGluaXRpYWxMZW5ndGggPCBN
SU5fU1BBUlNFX0FSUkFZX0lOREVYKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQoCisg
ICAgICAgICAgICBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aFNsb3dQdXRB
cnJheVN0b3JhZ2UKKyAgICAgICAgICAgIHx8IChpbml0aWFsTGVuZ3RoICYmIHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSk7CisgICAgICAgIGJ1dHRl
cmZseSA9IGNyZWF0ZUFycmF5QnV0dGVyZmx5KGdsb2JhbERhdGEsIGluaXRpYWxMZW5ndGgpOwog
ICAgIH0KLSAgICAKLSAgICBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5
Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGdsb2JhbERhdGEsIGFycmF5U3RydWN0dXJlLCBsZW5n
dGgpOwotCi0gICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0
IG9mIG1lbW9yeSBlcnJvciBoZXJlLCBidXQKLSAgICAgICAgLy8gd2hlbiBtYWtpbmcgdGhpcyBj
aGFuZ2Ugd2Ugc2hvdWxkIGNoZWNrIHRoYXQgYWxsIGNsaWVudHMgb2YgdGhpcwotICAgICAgICAv
LyBmdW5jdGlvbiB3aWxsIGNvcnJlY3RseSBoYW5kbGUgYW4gZXhjZXB0aW9uIGJlaW5nIHRocm93
biBmcm9tIGhlcmUuCi0gICAgICAgIGlmICghYXJyYXkpCi0gICAgICAgICAgICBDUkFTSCgpOwot
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWVzW2ldKTsKLSAg
ICAgICAgcmV0dXJuIGFycmF5OworICAgIEpTQXJyYXkqIGFycmF5ID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJheShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSk7CisgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEpOworICAgIHJldHVybiBhcnJheTsKK30KKworaW5saW5lIEpTQXJyYXkqIEpTQXJyYXk6
OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgaW5pdGlhbExlbmd0aCkKK3sKKyAgICB1bnNpZ25lZCB2
ZWN0b3JMZW5ndGggPSBzdGQ6Om1heChCQVNFX1ZFQ1RPUl9MRU4sIGluaXRpYWxMZW5ndGgpOwor
ICAgIGlmICh2ZWN0b3JMZW5ndGggPiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgCisgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHk7CisgICAgaWYg
KExJS0VMWShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aENvbnRpZ3VvdXMp
KSB7CisgICAgICAgICAgICAKKyAgICAgICAgdm9pZCogdGVtcDsKKyAgICAgICAgaWYgKCFnbG9i
YWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIDAs
IHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCAmdGVtcCkpCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpmcm9t
QmFzZSh0ZW1wLCAwLCAwKTsKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRWZWN0b3JMZW5ndGgodmVj
dG9yTGVuZ3RoKTsKKyAgICAgICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5ndGgoaW5pdGlhbExl
bmd0aCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdm9pZCogdGVtcDsKKyAgICAgICAgaWYgKCFn
bG9iYWxEYXRhLmhlYXAudHJ5QWxsb2NhdGVTdG9yYWdlKEJ1dHRlcmZseTo6dG90YWxTaXplKDAs
IDAsIHRydWUsIEFycmF5U3RvcmFnZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKSwgJnRlbXApKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6ZnJv
bUJhc2UodGVtcCwgMCwgMCk7CisgICAgICAgICpidXR0ZXJmbHktPmluZGV4aW5nSGVhZGVyKCkg
PSBpbmRleGluZ0hlYWRlckZvckFycmF5KGluaXRpYWxMZW5ndGgsIHZlY3Rvckxlbmd0aCk7Cisg
ICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7
CisgICAgICAgIHN0b3JhZ2UtPm1faW5kZXhCaWFzID0gMDsKKyAgICAgICAgc3RvcmFnZS0+bV9z
cGFyc2VNYXAuY2xlYXIoKTsKKyAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9
IGluaXRpYWxMZW5ndGg7CiAgICAgfQorICAgICAgICAKKyAgICBKU0FycmF5KiBhcnJheSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpTQXJy
YXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpOworICAgIGFycmF5LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK0pTQXJyYXkqIGFz
QXJyYXkoSlNWYWx1ZSk7CisKK2lubGluZSBKU0FycmF5KiBhc0FycmF5KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBBU1NFUlQoY2VsbC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOworICAgIHJl
dHVybiBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOworfQorCitpbmxpbmUgSlNBcnJheSogYXNBcnJh
eShKU1ZhbHVlIHZhbHVlKQoreworICAgIHJldHVybiBhc0FycmF5KHZhbHVlLmFzQ2VsbCgpKTsK
K30KKworaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2VsbC0+
Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQoraW5saW5lIGJvb2wgaXNKU0FycmF5
KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiBpc0pTQXJyYXkodi5hc0NlbGwoKSk7
IH0KKworaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgY29uc3QgQXJnTGlzdCYgdmFsdWVzKQoreworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSB2YWx1ZXMuc2l6ZSgpOworICAgIEpTQXJyYXkqIGFycmF5ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChnbG9iYWxEYXRhLCBhcnJheVN0cnVjdHVyZSwgbGVuZ3Ro
KTsKKworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgdGhyb3cgYW4gb3V0IG9mIG1l
bW9yeSBlcnJvciBoZXJlLCBidXQKKyAgICAvLyB3aGVuIG1ha2luZyB0aGlzIGNoYW5nZSB3ZSBz
aG91bGQgY2hlY2sgdGhhdCBhbGwgY2xpZW50cyBvZiB0aGlzCisgICAgLy8gZnVuY3Rpb24gd2ls
bCBjb3JyZWN0bHkgaGFuZGxlIGFuIGV4Y2VwdGlvbiBiZWluZyB0aHJvd24gZnJvbSBoZXJlLgor
ICAgIGlmICghYXJyYXkpCisgICAgICAgIENSQVNIKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIGFycmF5LT5pbml0aWFsaXplSW5kZXgoZ2xv
YmFsRGF0YSwgaSwgdmFsdWVzLmF0KGkpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisgICAgCitp
bmxpbmUgSlNBcnJheSogY29uc3RydWN0QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IGFycmF5U3RydWN0dXJlLCBjb25zdCBKU1ZhbHVlKiB2YWx1ZXMsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgSlNBcnJheSogYXJyYXkgPSBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGdsb2Jh
bERhdGEsIGFycmF5U3RydWN0dXJlLCBsZW5ndGgpOworCisgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCBwcm9iYWJseSB0aHJvdyBhbiBvdXQgb2YgbWVtb3J5IGVycm9yIGhlcmUsIGJ1dAorICAgIC8v
IHdoZW4gbWFraW5nIHRoaXMgY2hhbmdlIHdlIHNob3VsZCBjaGVjayB0aGF0IGFsbCBjbGllbnRz
IG9mIHRoaXMKKyAgICAvLyBmdW5jdGlvbiB3aWxsIGNvcnJlY3RseSBoYW5kbGUgYW4gZXhjZXB0
aW9uIGJlaW5nIHRocm93biBmcm9tIGhlcmUuCisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgQ1JB
U0goKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAg
ICAgYXJyYXktPmluaXRpYWxpemVJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZXNbaV0pOworICAg
IHJldHVybiBhcnJheTsKK30KIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
</data>
<flag name="review"
          id="186831"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>