<?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>119909</bug_id>
          
          <creation_ts>2013-08-16 13:03:39 -0700</creation_ts>
          <short_desc>DFG should optimize typedArray.byteLength</short_desc>
          <delta_ts>2013-08-16 22:49:50 -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>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>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>918086</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-16 13:03:39 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918090</commentid>
    <comment_count>1</comment_count>
      <attachid>208949</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-16 13:06:47 -0700</bug_when>
    <thetext>Created attachment 208949
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918091</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-16 13:09:14 -0700</bug_when>
    <thetext>Attachment 208949 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/Int16Array-bubble-sort-with-byteLength-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/Int16Array-bubble-sort-with-byteLength.html&apos;, u&apos;LayoutTests/fast/js/regress/Int8Array-load-with-byteLength-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/Int8Array-load-with-byteLength.html&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/Int16Array-bubble-sort-with-byteLength.js&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/Int8Array-load-with-byteLength.js&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/SpeculatedType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/runtime/TypedArrayType.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGArrayMode.cpp:495:  Extra space between return and Array  [whitespace/declaration] [3]
Total errors found: 1 in 15 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>918094</commentid>
    <comment_count>3</comment_count>
      <attachid>208949</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-16 13:22:01 -0700</bug_when>
    <thetext>Comment on attachment 208949
the patch

r=me, fix the style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918095</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-16 13:23:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 208949 [details])
&gt; r=me, fix the style error

Thanks, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>918218</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-16 22:49:50 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/154218</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208949</attachid>
            <date>2013-08-16 13:06:47 -0700</date>
            <delta_ts>2013-08-16 13:22:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24544</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MjAxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDEzLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBvcHRpbWl6ZSB0eXBlZEFycmF5LmJ5dGVMZW5ndGgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTkwOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRzIHR5cGVk
QXJyYXkuYnl0ZUxlbmd0aCBpbmxpbmluZyB0byB0aGUgREZHLCBhbmQgZG9lcyBzbyB3aXRob3V0
IGNoYW5naW5nCisgICAgICAgIHRoZSBJUjogYnl0ZUxlbmd0aCBpcyB0dXJuZWQgaW50byBHZXRB
cnJheUxlbmd0aCBmb2xsb3dlZCBieSBCaXRMU2hpZnQuIFRoaXMgaXMKKyAgICAgICAgbGVnYWwg
c2luY2UgdGhlIGJ5dGVMZW5ndGggb2YgYSB0eXBlZCBhcnJheSBjYW5ub3QgZXhjZWVkCisgICAg
ICAgIG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKS4KKworICAgICAgICAqIGJ5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVR5cGVGcm9tU3Bl
Y3VsYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmg6CisgICAgICAg
ICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6dG9BcnJheVR5cGUp
OgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphdHRlbXB0VG9NYWtlR2V0QXJyYXlMZW5ndGgp
OgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VHZXRCeXRlTGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpjb252ZXJ0VG9HZXRBcnJheUxl
bmd0aCk6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cHJlcGVuZEdldEFycmF5TGVu
Z3RoKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6Y29uc3RhbnRSZWdpc3RlckZvckNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFw
aDo6Y29udmVydFRvQ29uc3RhbnQpOgorICAgICAgICAqIHJ1bnRpbWUvVHlwZWRBcnJheVR5cGUu
aDoKKyAgICAgICAgKEpTQzo6bG9nRWxlbWVudFNpemUpOgorICAgICAgICAoSlNDOjplbGVtZW50
U2l6ZSk6CisKIDIwMTMtMDgtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBPYmplY3QgcHJvcGVydGllcyBhZGRlZCB1c2luZyBkb3Qgc3ludGF4IChvLmYgPSAu
Li4pIGZyb20gY29kZSB0aGF0IGlzbid0IGluIGV2YWwgc2hvdWxkIGJlIGxlc3MgbGlrZWx5IHRv
IGNhdXNlIGFuIG9iamVjdCB0byBiZWNvbWUgYSBkaWN0aW9uYXJ5CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHJldmlzaW9u
IDE1NDE5OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw1ICszMzQsMzcgQEAgU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tVmFsdWUoSlNWYQogICAgIHJldHVybiBTcGVjT3RoZXI7CiB9CiAKK1R5
cGVkQXJyYXlUeXBlIHR5cGVkQXJyYXlUeXBlRnJvbVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHR5cGUpCit7CisgICAgaWYgKGlzSW50OEFycmF5U3BlY3VsYXRpb24odHlwZSkpCisgICAgICAg
IHJldHVybiBUeXBlSW50ODsKKyAgICAgICAgCisgICAgaWYgKGlzSW50MTZBcnJheVNwZWN1bGF0
aW9uKHR5cGUpKQorICAgICAgICByZXR1cm4gVHlwZUludDE2OworICAgICAgICAKKyAgICBpZiAo
aXNJbnQzMkFycmF5U3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgIHJldHVybiBUeXBlSW50MzI7
CisgICAgICAgIAorICAgIGlmIChpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAg
ICAgcmV0dXJuIFR5cGVVaW50ODsKKyAgICAgICAgCisgICAgaWYgKGlzVWludDhDbGFtcGVkQXJy
YXlTcGVjdWxhdGlvbih0eXBlKSkKKyAgICAgICAgcmV0dXJuIFR5cGVVaW50OENsYW1wZWQ7Cisg
ICAgICAgIAorICAgIGlmIChpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24odHlwZSkpCisgICAgICAg
IHJldHVybiBUeXBlVWludDE2OworICAgICAgICAKKyAgICBpZiAoaXNVaW50MzJBcnJheVNwZWN1
bGF0aW9uKHR5cGUpKQorICAgICAgICByZXR1cm4gVHlwZVVpbnQzMjsKKyAgICAgICAgCisgICAg
aWYgKGlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24odHlwZSkpCisgICAgICAgIHJldHVybiBUeXBl
RmxvYXQzMjsKKyAgICAgICAgCisgICAgaWYgKGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24odHlw
ZSkpCisgICAgICAgIHJldHVybiBUeXBlRmxvYXQ2NDsKKyAgICAKKyAgICByZXR1cm4gTm90VHlw
ZWRBcnJheTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCShyZXZpc2lvbiAxNTQxOTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBTcGVjdWxhdGVkVHlwZV9oCiAK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiVHlwZWRBcnJheVR5cGUuaCIKICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMzAsNiAr
MzMxLDggQEAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKAogU3BlY3Vs
YXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tQ2VsbChKU0NlbGwqKTsKIFNwZWN1bGF0ZWRUeXBlIHNw
ZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOwogCitUeXBlZEFycmF5VHlwZSB0eXBlZEFycmF5
VHlwZUZyb21TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSk7CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMTU0MTk4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODQs
NiArNDg0LDMyIEBAIFR5cGVkQXJyYXlUeXBlIHRvVHlwZWRBcnJheVR5cGUoQXJyYXk6OlQKICAg
ICB9CiB9CiAKK0FycmF5OjpUeXBlIHRvQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUeXBlSW50ODoKKyAgICAgICAgcmV0dXJu
IEFycmF5OjpJbnQ4QXJyYXk7CisgICAgY2FzZSBUeXBlSW50MTY6CisgICAgICAgIHJldHVybiBB
cnJheTo6SW50MTZBcnJheTsKKyAgICBjYXNlIFR5cGVJbnQzMjoKKyAgICAgICAgcmV0dXJuICBB
cnJheTo6SW50MzJBcnJheTsKKyAgICBjYXNlIFR5cGVVaW50ODoKKyAgICAgICAgcmV0dXJuIEFy
cmF5OjpVaW50OEFycmF5OworICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAgcmV0
dXJuIEFycmF5OjpVaW50OENsYW1wZWRBcnJheTsKKyAgICBjYXNlIFR5cGVVaW50MTY6CisgICAg
ICAgIHJldHVybiBBcnJheTo6VWludDE2QXJyYXk7CisgICAgY2FzZSBUeXBlVWludDMyOgorICAg
ICAgICByZXR1cm4gQXJyYXk6OlVpbnQzMkFycmF5OworICAgIGNhc2UgVHlwZUZsb2F0MzI6Cisg
ICAgICAgIHJldHVybiBBcnJheTo6RmxvYXQzMkFycmF5OworICAgIGNhc2UgVHlwZUZsb2F0NjQ6
CisgICAgICAgIHJldHVybiBBcnJheTo6RmxvYXQ2NEFycmF5OworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBBcnJheTo6R2VuZXJpYzsKKyAgICB9Cit9CisKIHZvaWQgQXJyYXlNb2RlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KHR5cGUoKSwgYXJy
YXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShyZXZpc2lvbiAxNTQxOTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDUsNiArMTA1LDcgQEAgY29uc3QgY2hhciogYXJyYXlTcGVjdWxhdGlvblRvU3RyaW5nKEFycgog
Y29uc3QgY2hhciogYXJyYXlDb252ZXJzaW9uVG9TdHJpbmcoQXJyYXk6OkNvbnZlcnNpb24pOwog
CiBUeXBlZEFycmF5VHlwZSB0b1R5cGVkQXJyYXlUeXBlKEFycmF5OjpUeXBlKTsKK0FycmF5OjpU
eXBlIHRvQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAogY2xhc3MgQXJyYXlNb2RlIHsKIHB1
YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkocmV2aXNpb24gMTU0MTk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI5LDU2ICs3MjksMTQgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIGlmICghbm9kZS0+Y2hp
bGQxKCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7Ci0gICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihub2RlLT5wcmVk
aWN0aW9uKCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKG1fZ3Jh
cGguaWRlbnRpZmllcnMoKVtub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldICE9IHZtKCkucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLmltcGwoKSkKKyAgICAgICAgICAgIGlmIChtX2dyYXBoLmlkZW50aWZp
ZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXSA9PSB2bSgpLnByb3BlcnR5TmFtZXMtPmxl
bmd0aC5pbXBsKCkpIHsKKyAgICAgICAgICAgICAgICBhdHRlbXB0VG9NYWtlR2V0QXJyYXlMZW5n
dGgobm9kZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2sgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPmNvZGVP
cmlnaW4pOwotICAgICAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAKLSAgICAg
ICAgICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRBcnJheVByb2ZpbGUobm9kZS0+Y29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIEFycmF5TW9kZSBhcnJheU1vZGUgPSBBcnJh
eU1vZGUoQXJyYXk6OlNlbGVjdFVzaW5nUHJlZGljdGlvbnMpOwotICAgICAgICAgICAgaWYgKGFy
cmF5UHJvZmlsZSkgewotICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgYXJyYXlQcm9maWxlLT5j
b21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyLCBwcm9maWxlZEJsb2NrKTsKLSAgICAgICAg
ICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChsb2NrZXIsIGFycmF5
UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBpZiAoYXJyYXlN
b2RlLnR5cGUoKSA9PSBBcnJheTo6VW5wcm9maWxlZCkgewotICAgICAgICAgICAgICAgICAgICAv
LyBGb3Igbm9ybWFsIGFycmF5IG9wZXJhdGlvbnMsIGl0IG1ha2VzIHNlbnNlIHRvIHRyZWF0IFVu
cHJvZmlsZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzZXMgYXMgRm9yY2VFeGl0IGFu
ZCBnZXQgbW9yZSBkYXRhIHJhdGhlciB0aGFuIHVzaW5nCi0gICAgICAgICAgICAgICAgICAgIC8v
IHByZWRpY3Rpb25zIGFuZCB0aGVuIHBvc3NpYmx5IGVuZGluZyB1cCB3aXRoIGEgR2VuZXJpYy4g
QnV0IGhlcmUsCi0gICAgICAgICAgICAgICAgICAgIC8vIHdlIHRyZWF0IGFueXRoaW5nIHRoYXQg
aXMgVW5wcm9maWxlZCBhcyBHZW5lcmljIGFuZCBrZWVwIHRoZQotICAgICAgICAgICAgICAgICAg
ICAvLyBHZXRCeUlkLiBJLmUuIEZvcmNlRXhpdCA9IEdlbmVyaWMuIFNvLCB0aGVyZSBpcyBubyBo
YXJtIC0gYW5kIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgLy8gcHJvZml0IC0gZnJvbSB0cmVh
dGluZyB0aGUgVW5wcm9maWxlZCBjYXNlIGFzCi0gICAgICAgICAgICAgICAgICAgIC8vIFNlbGVj
dFVzaW5nUHJlZGljdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5
TW9kZShBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0aW9ucyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBhcnJheU1vZGUgPSBhcnJh
eU1vZGUucmVmaW5lKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksIG5vZGUtPnByZWRpY3Rp
b24oKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09
IEFycmF5OjpHZW5lcmljKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGlucHV0
IGlzIHNvbWV0aGluZyB0aGF0IHdlIGNhbid0IGdldCBhcnJheSBsZW5ndGggZm9yLCBidXQgZm9y
IHdoaWNoIHdlCi0gICAgICAgICAgICAgICAgLy8gY291bGQgaW5zZXJ0IHNvbWUgY29udmVyc2lv
bnMgaW4gb3JkZXIgdG8gdHJhbnNmb3JtIGl0IGludG8gc29tZXRoaW5nIHRoYXQgd2UgY2FuIGRv
IGl0Ci0gICAgICAgICAgICAgICAgLy8gZm9yLgotICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlU3RyaW5nT2JqZWN0KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGF0dGVtcHRUb0ZvcmNlU3RyaW5nQXJyYXlNb2RlQnlUb1N0cmluZ0NvbnZlcnNpb248U3Ry
aW5nT2JqZWN0VXNlPihhcnJheU1vZGUsIG5vZGUpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVTdHJpbmdPclN0cmluZ09iamVjdCgpKQot
ICAgICAgICAgICAgICAgICAgICBhdHRlbXB0VG9Gb3JjZVN0cmluZ0FycmF5TW9kZUJ5VG9TdHJp
bmdDb252ZXJzaW9uPFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlPihhcnJheU1vZGUsIG5vZGUpOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWFycmF5TW9kZS5z
dXBwb3J0c0xlbmd0aCgpKQorICAgICAgICAgICAgaWYgKG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldID09IHZtKCkucHJvcGVydHlOYW1lcy0+Ynl0ZUxlbmd0
aC5pbXBsKCkpIHsKKyAgICAgICAgICAgICAgICBhdHRlbXB0VG9NYWtlR2V0Qnl0ZUxlbmd0aChu
b2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG5vZGUtPnNldE9wKEdl
dEFycmF5TGVuZ3RoKTsKLSAgICAgICAgICAgIEFTU0VSVChub2RlLT5mbGFncygpICYgTm9kZU11
c3RHZW5lcmF0ZSk7Ci0gICAgICAgICAgICBub2RlLT5jbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJh
dGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCk7Ci0gICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJ
ZlByb2ZpdGFibGU8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBu
b2RlLT5zZXRBcnJheU1vZGUoYXJyYXlNb2RlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Tm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2RlLCBub2RlLT5jb2RlT3JpZ2luLCBu
b2RlLT5jaGlsZDEoKS5ub2RlKCksIDAsIGxlbmd0aE5lZWRzU3RvcmFnZSk7Ci0gICAgICAgICAg
ICBpZiAoIXN0b3JhZ2UpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMigpID0gRWRnZShzdG9yYWdlKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTE0NDgsNiAr
MTQwNiwxMDUgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRh
YmxlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KKyAgICAKKyAgICBib29sIGF0dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChOb2RlKiBub2Rl
KQorICAgIHsKKyAgICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24obm9kZS0+cHJlZGljdGlv
bigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrID0gbV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihub2RlLT5jb2RlT3JpZ2lu
KTsKKyAgICAgICAgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSAKKyAgICAgICAgICAgIHBy
b2ZpbGVkQmxvY2stPmdldEFycmF5UHJvZmlsZShub2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpOworICAgICAgICBBcnJheU1vZGUgYXJyYXlNb2RlID0gQXJyYXlNb2RlKEFycmF5OjpTZWxl
Y3RVc2luZ1ByZWRpY3Rpb25zKTsKKyAgICAgICAgaWYgKGFycmF5UHJvZmlsZSkgeworICAgICAg
ICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgICAgIGFycmF5UHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
ciwgcHJvZmlsZWRCbG9jayk7CisgICAgICAgICAgICBhcnJheU1vZGUgPSBBcnJheU1vZGU6OmZy
b21PYnNlcnZlZChsb2NrZXIsIGFycmF5UHJvZmlsZSwgQXJyYXk6OlJlYWQsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGlmIChhcnJheU1vZGUudHlwZSgpID09IEFycmF5OjpVbnByb2ZpbGVkKSB7Cisg
ICAgICAgICAgICAgICAgLy8gRm9yIG5vcm1hbCBhcnJheSBvcGVyYXRpb25zLCBpdCBtYWtlcyBz
ZW5zZSB0byB0cmVhdCBVbnByb2ZpbGVkCisgICAgICAgICAgICAgICAgLy8gYWNjZXNzZXMgYXMg
Rm9yY2VFeGl0IGFuZCBnZXQgbW9yZSBkYXRhIHJhdGhlciB0aGFuIHVzaW5nCisgICAgICAgICAg
ICAgICAgLy8gcHJlZGljdGlvbnMgYW5kIHRoZW4gcG9zc2libHkgZW5kaW5nIHVwIHdpdGggYSBH
ZW5lcmljLiBCdXQgaGVyZSwKKyAgICAgICAgICAgICAgICAvLyB3ZSB0cmVhdCBhbnl0aGluZyB0
aGF0IGlzIFVucHJvZmlsZWQgYXMgR2VuZXJpYyBhbmQga2VlcCB0aGUKKyAgICAgICAgICAgICAg
ICAvLyBHZXRCeUlkLiBJLmUuIEZvcmNlRXhpdCA9IEdlbmVyaWMuIFNvLCB0aGVyZSBpcyBubyBo
YXJtIC0gYW5kIG9ubHkKKyAgICAgICAgICAgICAgICAvLyBwcm9maXQgLSBmcm9tIHRyZWF0aW5n
IHRoZSBVbnByb2ZpbGVkIGNhc2UgYXMKKyAgICAgICAgICAgICAgICAvLyBTZWxlY3RVc2luZ1By
ZWRpY3Rpb25zLgorICAgICAgICAgICAgICAgIGFycmF5TW9kZSA9IEFycmF5TW9kZShBcnJheTo6
U2VsZWN0VXNpbmdQcmVkaWN0aW9ucyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBhcnJheU1vZGUgPSBhcnJheU1vZGUucmVmaW5lKG5vZGUtPmNoaWxk
MSgpLT5wcmVkaWN0aW9uKCksIG5vZGUtPnByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgaWYgKGFycmF5TW9kZS50eXBlKCkgPT0gQXJyYXk6OkdlbmVyaWMpIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBpbnB1dCBpcyBzb21ldGhpbmcgdGhhdCB3ZSBjYW4ndCBnZXQg
YXJyYXkgbGVuZ3RoIGZvciwgYnV0IGZvciB3aGljaCB3ZQorICAgICAgICAgICAgLy8gY291bGQg
aW5zZXJ0IHNvbWUgY29udmVyc2lvbnMgaW4gb3JkZXIgdG8gdHJhbnNmb3JtIGl0IGludG8gc29t
ZXRoaW5nIHRoYXQgd2UgY2FuIGRvIGl0CisgICAgICAgICAgICAvLyBmb3IuCisgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09iamVjdCgpKQorICAg
ICAgICAgICAgICAgIGF0dGVtcHRUb0ZvcmNlU3RyaW5nQXJyYXlNb2RlQnlUb1N0cmluZ0NvbnZl
cnNpb248U3RyaW5nT2JqZWN0VXNlPihhcnJheU1vZGUsIG5vZGUpOworICAgICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0
KCkpCisgICAgICAgICAgICAgICAgYXR0ZW1wdFRvRm9yY2VTdHJpbmdBcnJheU1vZGVCeVRvU3Ry
aW5nQ29udmVyc2lvbjxTdHJpbmdPclN0cmluZ09iamVjdFVzZT4oYXJyYXlNb2RlLCBub2RlKTsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGlmICghYXJyYXlNb2RlLnN1cHBvcnRz
TGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICBj
b252ZXJ0VG9HZXRBcnJheUxlbmd0aChub2RlLCBhcnJheU1vZGUpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBhdHRlbXB0VG9NYWtlR2V0Qnl0ZUxlbmd0aChO
b2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24obm9kZS0+
cHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAg
ICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSB0eXBlZEFycmF5VHlwZUZyb21TcGVjdWxhdGlvbihu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgaWYgKCFpc1R5cGVkVmlldyh0
eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmIChl
bGVtZW50U2l6ZSh0eXBlKSA9PSAxKSB7CisgICAgICAgICAgICBjb252ZXJ0VG9HZXRBcnJheUxl
bmd0aChub2RlLCBBcnJheU1vZGUodG9BcnJheVR5cGUodHlwZSkpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBOb2RlKiBsZW5ndGggPSBw
cmVwZW5kR2V0QXJyYXlMZW5ndGgoCisgICAgICAgICAgICBub2RlLT5jb2RlT3JpZ2luLCBub2Rl
LT5jaGlsZDEoKS5ub2RlKCksIEFycmF5TW9kZSh0b0FycmF5VHlwZSh0eXBlKSkpOworICAgICAg
ICAKKyAgICAgICAgTm9kZSogc2hpZnRBbW91bnQgPSBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgSlNDb25zdGFudCwgbm9k
ZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmNvbnN0YW50UmVnaXN0
ZXJGb3JDb25zdGFudChqc051bWJlcihsb2dFbGVtZW50U2l6ZSh0eXBlKSkpKSk7CisgICAgICAg
IAorICAgICAgICAvLyBXZSBjYW4gdXNlIGEgQml0TFNoaWZ0IGhlcmUgYmVjYXVzZSB0eXBlZCBh
cnJheXMgd2lsbCBuZXZlciBoYXZlIGEgYnl0ZUxlbmd0aAorICAgICAgICAvLyB0aGF0IG92ZXJm
bG93cyBpbnQzMi4KKyAgICAgICAgbm9kZS0+c2V0T3AoQml0TFNoaWZ0KTsKKyAgICAgICAgQVNT
RVJUKG5vZGUtPmZsYWdzKCkgJiBOb2RlTXVzdEdlbmVyYXRlKTsKKyAgICAgICAgbm9kZS0+Y2xl
YXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpOworICAgICAgICBv
YnNlcnZlVXNlS2luZE9uTm9kZShsZW5ndGgsIEludDMyVXNlKTsKKyAgICAgICAgb2JzZXJ2ZVVz
ZUtpbmRPbk5vZGUoc2hpZnRBbW91bnQsIEludDMyVXNlKTsKKyAgICAgICAgbm9kZS0+Y2hpbGQx
KCkgPSBFZGdlKGxlbmd0aCwgSW50MzJVc2UpOworICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVk
Z2Uoc2hpZnRBbW91bnQsIEludDMyVXNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIAorICAgIHZvaWQgY29udmVydFRvR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSwgQXJyYXlN
b2RlIGFycmF5TW9kZSkKKyAgICB7CisgICAgICAgIG5vZGUtPnNldE9wKEdldEFycmF5TGVuZ3Ro
KTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPmZsYWdzKCkgJiBOb2RlTXVzdEdlbmVyYXRlKTsKKyAg
ICAgICAgbm9kZS0+Y2xlYXJGbGFncyhOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29y
bGQpOworICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8S25vd25DZWxsVXNl
Pihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZShhcnJheU1vZGUp
OworICAgICAgICAgICAgCisgICAgICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5
TW9kZSwgbm9kZS0+Y29kZU9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCAwLCBsZW5ndGhO
ZWVkc1N0b3JhZ2UpOworICAgICAgICBpZiAoIXN0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAKKyAgICAgICAgbm9kZS0+Y2hpbGQyKCkgPSBFZGdlKHN0b3JhZ2UpOwor
ICAgIH0KKyAgICAKKyAgICBOb2RlKiBwcmVwZW5kR2V0QXJyYXlMZW5ndGgoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKKyAgICB7CisgICAg
ICAgIE5vZGUqIHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgY29kZU9yaWdpbiwgY2hp
bGQsIDAsIGxlbmd0aE5lZWRzU3RvcmFnZSk7CisgICAgICAgIHJldHVybiBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNJbnQzMiwgR2V0
QXJyYXlMZW5ndGgsIGNvZGVPcmlnaW4sCisgICAgICAgICAgICBPcEluZm8oYXJyYXlNb2RlLmFz
V29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwgRWRnZShzdG9yYWdlKSk7CisgICAg
fQogCiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICB1bnNpZ25lZCBtX2luZGV4SW5CbG9j
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE1NDE5
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5
KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgbm9kZS0+Y29udmVydFRvQ29u
c3RhbnQoY29uc3RhbnROdW1iZXIpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGNvbnZlcnRUb0Nv
bnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpCisgICAgdW5zaWduZWQgY29uc3RhbnRS
ZWdpc3RlckZvckNvbnN0YW50KEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICB1bnNpZ25l
ZCBjb25zdGFudFJlZ2lzdGVyOwogICAgICAgICBpZiAoIW1fY29kZUJsb2NrLT5maW5kQ29uc3Rh
bnQodmFsdWUsIGNvbnN0YW50UmVnaXN0ZXIpKSB7CkBAIC0xNjEsNyArMTYxLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksCiAgICAg
ICAgICAgICAgICAgdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnZlcnRUb0NvbnN0YW50
KG5vZGUsIGNvbnN0YW50UmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gY29uc3RhbnRSZWdpc3Rl
cjsKKyAgICB9CisgICAgCisgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudChOb2RlKiBub2RlLCBK
U1ZhbHVlIHZhbHVlKQorICAgIHsKKyAgICAgICAgY29udmVydFRvQ29uc3RhbnQobm9kZSwgY29u
c3RhbnRSZWdpc3RlckZvckNvbnN0YW50KHZhbHVlKSk7CiAgICAgfQogCiAgICAgLy8gQ29kZUJs
b2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8g
YmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5oCShyZXZpc2lvbiAxNTQxOTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIGlubGluZSBib29sIGlzVHlwZWRWaWV3KFR5cGVkQXJy
YXlUeXBlIHQKICAgICB9CiB9CiAKLWlubGluZSBzaXplX3QgZWxlbWVudFNpemUoVHlwZWRBcnJh
eVR5cGUgdHlwZSkKK2lubGluZSB1bnNpZ25lZCBsb2dFbGVtZW50U2l6ZShUeXBlZEFycmF5VHlw
ZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgTm90VHlwZWRBcnJheToK
QEAgLTczLDIxICs3MywyNiBAQCBpbmxpbmUgc2l6ZV90IGVsZW1lbnRTaXplKFR5cGVkQXJyYXlU
eXBlCiAgICAgY2FzZSBUeXBlVWludDg6CiAgICAgY2FzZSBUeXBlVWludDhDbGFtcGVkOgogICAg
IGNhc2UgVHlwZURhdGFWaWV3OgotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIDA7
CiAgICAgY2FzZSBUeXBlSW50MTY6CiAgICAgY2FzZSBUeXBlVWludDE2OgotICAgICAgICByZXR1
cm4gMjsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBUeXBlSW50MzI6CiAgICAgY2FzZSBU
eXBlVWludDMyOgogICAgIGNhc2UgVHlwZUZsb2F0MzI6Ci0gICAgICAgIHJldHVybiA0OworICAg
ICAgICByZXR1cm4gMjsKICAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gODsK
KyAgICAgICAgcmV0dXJuIDM7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBzaXplX3QgZWxlbWVudFNpemUoVHlwZWRB
cnJheVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBs
b2dFbGVtZW50U2l6ZSh0eXBlKTsKK30KKwogY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm9Gb3JU
eXBlKFR5cGVkQXJyYXlUeXBlKTsKIAogaW5saW5lIGJvb2wgaXNJbnQoVHlwZWRBcnJheVR5cGUg
dHlwZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDIwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA4LTE2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZHIHNob3VsZCBvcHRpbWl6ZSB0eXBl
ZEFycmF5LmJ5dGVMZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExOTkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgQ29udmVydCB0d28gb2YgdGhlIHR5ZXBkIGFycmF5IHRlc3RzIHRv
IHVzZSBieXRlTGVuZ3RoIGluc3RlYWQgb2YgbGVuZ3RoLgorICAgICAgICBUaGVzZSB0ZXN0cyBz
aG93IHNwZWVkLXVwcyBhcm91bmQgMi41eC01eC4KKworICAgICAgICAqIGZhc3QvanMvcmVncmVz
cy9JbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9JbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdp
dGgtYnl0ZUxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3MvSW50
OEFycmF5LWxvYWQtd2l0aC1ieXRlTGVuZ3RoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9qcy9yZWdyZXNzL0ludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL0ludDE2QXJyYXkt
YnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoLmpzOiBBZGRlZC4KKyAgICAgICAgKGJ1YmJsZVNv
cnQpOgorICAgICAgICAobXlSYW5kb20pOgorICAgICAgICAodmFsaWRhdGVTb3J0KToKKyAgICAg
ICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL0ludDhBcnJheS1sb2FkLXdpdGgtYnl0
ZUxlbmd0aC5qczogQWRkZWQuCisgICAgICAgIChhZGxlcjMyKToKKwogMjAxMy0wOC0xNiAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdCBwcm9wZXJ0aWVz
IGFkZGVkIHVzaW5nIGRvdCBzeW50YXggKG8uZiA9IC4uLikgZnJvbSBjb2RlIHRoYXQgaXNuJ3Qg
aW4gZXZhbCBzaG91bGQgYmUgbGVzcyBsaWtlbHkgdG8gY2F1c2UgYW4gb2JqZWN0IHRvIGJlY29t
ZSBhIGRpY3Rpb25hcnkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9JbnQ4QXJy
YXktbG9hZC13aXRoLWJ5dGVMZW5ndGgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9JbnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGgtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL0lu
dDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL0ludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0
aAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhy
b3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL0ludDhBcnJheS1sb2FkLXdpdGgtYnl0
ZUxlbmd0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9J
bnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9JbnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9JbnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGguanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL0ludDE2QXJy
YXktYnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvSW50MTZBcnJheS1idWJibGUtc29ydC13aXRo
LWJ5dGVMZW5ndGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL0ludDE2QXJyYXktYnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvSW50MTZB
cnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGgKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9JbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9JbnQxNkFycmF5LWJ1YmJsZS1z
b3J0LXdpdGgtYnl0ZUxlbmd0aC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZWdyZXNzL0ludDE2QXJyYXktYnViYmxlLXNvcnQtd2l0aC1ieXRlTGVuZ3RoLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvSW50MTZBcnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGguanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9JbnQ4QXJyYXktbG9hZC13aXRoLWJ5dGVMZW5ndGguanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9JbnQ4QXJyYXktbG9h
ZC13aXRoLWJ5dGVMZW5ndGguanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pz
L3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL0ludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvLyBUZXN0IHRoZSBwZXJmb3JtYW5jZSBv
ZiBJbnQ4QXJyYXkgYnkgaW1wbGVtZW50aW5nIEFkbGVyMzIuCisKK2Z1bmN0aW9uIGFkbGVyMzIo
YXJyYXkpCit7CisgICAgdmFyIE1PRF9BRExFUiA9IDY1NTIxOworICAgIHZhciBhID0gMTsKKyAg
ICB2YXIgYiA9IDA7CisgICAgdmFyIGluZGV4OworIAorICAgIC8qIFByb2Nlc3MgZWFjaCBieXRl
IG9mIHRoZSBkYXRhIGluIG9yZGVyICovCisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJy
YXkuYnl0ZUxlbmd0aDsgKytpbmRleCkKKyAgICB7CisgICAgICAgIGEgPSAoYSArIGFycmF5W2lu
ZGV4XSkgJSBNT0RfQURMRVI7CisgICAgICAgIGIgPSAoYiArIGEpICUgTU9EX0FETEVSOworICAg
IH0KKyAKKyAgICByZXR1cm4gKGIgPDwgMTYpIHwgYTsKK30KKwordmFyIGFycmF5ID0gbmV3IElu
dDhBcnJheSgxMDAwKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkuYnl0ZUxlbmd0aCA7ICsr
aSkKKyAgICBhcnJheVtpXSA9IGk7CisKK3ZhciByZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7
IGkgPCAzMDA7ICsraSkKKyAgICByZXN1bHQgKz0gYWRsZXIzMihhcnJheSk7CisKK2lmIChyZXN1
bHQgIT0gLTYzMzAwKQorICAgIHRocm93ICJCYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9JbnQxNkFycmF5LWJ1YmJs
ZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL0ludDE2QXJyYXktYnViYmxlLXNvcnQtd2l0aC1ieXRl
TGVuZ3RoLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3Nj
cmlwdC10ZXN0cy9JbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdpdGgtYnl0ZUxlbmd0aC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvLyBDb3B5cmlnaHQgMjAwOCB0aGUgVjggcHJv
amVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
Ly8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKy8vICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZAorLy8gICAgICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworLy8gICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisvLyAgICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLwor
Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworLy8gVGVzdCB0aGUgcGVyZm9ybWFuY2Ugb2YgSW50MTZBcnJheSBieSBpbXBsZW1lbnRpbmcg
YSBidWJibGUgc29ydC4KKworZnVuY3Rpb24gYnViYmxlU29ydChhcnJheSkKK3sKKyAgICBmb3Ig
KHZhciBpID0gMTsgaSA8IChhcnJheS5ieXRlTGVuZ3RoID4+IDEpOyArK2kpIHsKKyAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCAoYXJyYXkuYnl0ZUxlbmd0aCA+PiAxKSAtIGk7ICsraikgewor
ICAgICAgICAgICAgaWYgKGFycmF5W2ogKyAxXSA8IGFycmF5W2pdKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHRtcCA9IGFycmF5W2pdOworICAgICAgICAgICAgICAgIGFycmF5W2pdID0gYXJyYXlb
aiArIDFdOworICAgICAgICAgICAgICAgIGFycmF5W2ogKyAxXSA9IHRtcDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVjgncyByYW5kb20gZnVuY3Rpb24uCitteVJh
bmRvbSA9IChmdW5jdGlvbigpIHsKKyAgdmFyIHNlZWQgPSA0OTczNDMyMTsKKyAgcmV0dXJuIGZ1
bmN0aW9uKCkgeworICAgIC8vIFJvYmVydCBKZW5raW5zJyAzMiBiaXQgaW50ZWdlciBoYXNoIGZ1
bmN0aW9uLgorICAgIHNlZWQgPSAoKHNlZWQgKyAweDdlZDU1ZDE2KSArIChzZWVkIDw8IDEyKSkg
ICYgMHhmZmZmZmZmZjsKKyAgICBzZWVkID0gKChzZWVkIF4gMHhjNzYxYzIzYykgXiAoc2VlZCA+
Pj4gMTkpKSAmIDB4ZmZmZmZmZmY7CisgICAgc2VlZCA9ICgoc2VlZCArIDB4MTY1NjY3YjEpICsg
KHNlZWQgPDwgNSkpICAgJiAweGZmZmZmZmZmOworICAgIHNlZWQgPSAoKHNlZWQgKyAweGQzYTI2
NDZjKSBeIChzZWVkIDw8IDkpKSAgICYgMHhmZmZmZmZmZjsKKyAgICBzZWVkID0gKChzZWVkICsg
MHhmZDcwNDZjNSkgKyAoc2VlZCA8PCAzKSkgICAmIDB4ZmZmZmZmZmY7CisgICAgc2VlZCA9ICgo
c2VlZCBeIDB4YjU1YTRmMDkpIF4gKHNlZWQgPj4+IDE2KSkgJiAweGZmZmZmZmZmOworICAgIHJl
dHVybiAoc2VlZCAmIDB4ZmZmZmZmZikgLyAweDEwMDAwMDAwOworICB9OworfSkoKTsKKworZnVu
Y3Rpb24gYXJyYXlUb1N0cmluZyhhcnJheSkgeworICAgIHZhciByZXN1bHQgPSAiWyI7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAoYXJyYXkuYnl0ZUxlbmd0aCA+PiAxKTsgKytpKSB7CisgICAg
ICAgIGlmIChpKQorICAgICAgICAgICAgcmVzdWx0ICs9ICIsICI7CisgICAgICAgIHJlc3VsdCAr
PSBhcnJheVtpXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdCArICJdIjsKK30KKworZnVuY3Rp
b24gdmFsaWRhdGVTb3J0KGFycmF5KSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoYXJyYXku
Ynl0ZUxlbmd0aCA+PiAxKSAtIDE7ICsraSkgeworICAgICAgICBpZiAoYXJyYXlbaSArIDFdIDwg
YXJyYXlbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit2YXIgYXJyYXkgPSBuZXcgSW50MTZBcnJheSgxMDAwKTsKK2ZvciAodmFyIGNv
dW50ID0gMDsgY291bnQgPCAxMDsgKytjb3VudCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
KGFycmF5LmJ5dGVMZW5ndGggPj4gMSk7ICsraSkgeworICAgICAgICBhcnJheVtpXSA9IG15UmFu
ZG9tKCkgKiA2NTUzNTsKKyAgICB9CisgICAgCisgICAgYnViYmxlU29ydChhcnJheSk7CisgICAg
CisgICAgaWYgKCF2YWxpZGF0ZVNvcnQoYXJyYXkpKQorICAgICAgICB0aHJvdyAiQmFkIHJlc3Vs
dDogIiArIGFycmF5VG9TdHJpbmcoYXJyYXkpOworfQorCg==
</data>
<flag name="review"
          id="230921"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>