<?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>69863</bug_id>
          
          <creation_ts>2011-10-11 13:39:38 -0700</creation_ts>
          <short_desc>DFG JIT 32_64 - Switch to cdecl calling convention.</short_desc>
          <delta_ts>2011-10-11 15:50:59 -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>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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>481869</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-11 13:39:38 -0700</bug_when>
    <thetext>This makes it easier to keep the stack correctly aligned, which is reuired on OS X.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481888</commentid>
    <comment_count>1</comment_count>
      <attachid>110570</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-11 13:54:04 -0700</bug_when>
    <thetext>Created attachment 110570
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481889</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 13:56:41 -0700</bug_when>
    <thetext>Attachment 110570 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/dfg/DFGOperations.h:87:  DFG_OPERATION is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h:1252:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 8 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>481909</commentid>
    <comment_count>3</comment_count>
      <attachid>110570</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-11 14:20:52 -0700</bug_when>
    <thetext>Comment on attachment 110570
The patch

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

r=me, fix the spelling error and the sizeof&lt;SPACE!!!!&gt;( style error

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This makes it easier to keep the stack correctly aligned, which is reuired on OS X.

required.

r-!!!!!111!!!1!!!111!1

&gt; Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h:1060
&gt; +        m_jit.move(Imm32(numConstants), GPRInfo::argumentGPR2);
&gt; +        m_jit.move(Imm32(startConstant), GPRInfo::argumentGPR1);

well caught sir!

&gt;&gt; Source/JavaScriptCore/dfg/DFGJITCodeGenerator.h:1252
&gt;&gt; +        m_jit.storeDouble(value, JITCompiler::Address(JITCompiler::stackPointerRegister, m_callArgumentIndex * sizeof (void*)));
&gt; 
&gt; Extra space before ( in function call  [whitespace/parens] [4]

This is a real style bug in the sizeof</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481983</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-10-11 15:50:59 -0700</bug_when>
    <thetext>Fixed in r97189</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110570</attachid>
            <date>2011-10-11 13:54:04 -0700</date>
            <delta_ts>2011-10-11 14:20:52 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>69863.patch</filename>
            <type>text/plain</type>
            <size>36635</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcxNzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTEtMTAtMTEgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFyYWNsb3VnaEBhcHBsZS5jb20+CisK
KyAgICAgICAgREZHIEpJVCAzMl82NCAtIFN3aXRjaCB0byBjZGVjbCBjYWxsaW5nIGNvbnZlbnRp
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
bWFrZXMgaXQgZWFzaWVyIHRvIGtlZXAgdGhlIHN0YWNrIGNvcnJlY3RseSBhbGlnbmVkLCB3aGlj
aCBpcyByZXVpcmVkIG9uIE9TIFguCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHRyOjpGdW5jdGlvblB0cik6Cisg
ICAgICAgICAgICAtIFByb3ZpZGUgZGVmYXVsdCBGdW5jdGlvblB0ciBjb25zdHJ1Y3RvcnMgZm9y
IENERUNMIGZ1bmN0aW9ucyBvbiBTVERDQUxMIHBsYXRmb3Jtcy4KKyAgICAgICAgKiBkZmcvREZH
SklUQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAgICAgLSBTd2l0Y2ggY2FsbHMgdG8gcG9rZSBhcmd1bWVudHMgcmF0aGVyIHRoYW4g
cHVzaGluZyB0aGVtLgorICAgICAgICAoSlNDOjpERkc6OnJlc2V0Q2FsbEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6YWRkQ2FsbEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6REZHOjph
ZGRDYWxsQXJndW1lbnRCb3hlZCk6CisgICAgICAgICAgICAtIEhlbHBlciBmdW5jdGlvbnMgdG8g
c3RhY2sgdXAgY2FsbCBhcmd1bWVudHMgb24gWDg2LgorICAgICAgICAqIGRmZy9ERkdKSVRDb2Rl
R2VuZXJhdG9yMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvZGVHZW5lcmF0b3I6
OmVtaXRDYWxsKToKKyAgICAgICAgICAgIC0gRG9uJ3QgcHVzaCwgcG9rZSEKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmNvbXBpbGVCb2R5KToKKyAgICAgICAgICAgIC0gRG9uJ3QgcHVzaCwgcG9rZSEKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICAgICAtIFN3aXRjaCBSZXR1cm5B
ZGRyZXNzIHdyYXBwZXJzIHRvIHB1c2ggcmV0dXJuIGFkZHJlc3MgbGFzdCwgdXBkYXRlIGFzbSB0
cmFtcG9saW5lcy4KKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAgICAg
LSBzd2l0Y2ggREZHX09QRVJBVElPTiB0byBhc3NlcnQgQ0RFQ0wgb24gU1REQ0FMTCBwbGF0Zm9y
bXMuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmZtb2RXaXRoQ0RlY2wpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgICAgIC0gT24gU1REQ0FMTCBwbGF0Zm9ybXMgd3JhcCBm
bW9kLCBzaW5jZSBERkdfT1BFUkFUSU9OIHdyYXBwZXJzIGFyZSBDREVDTC4KKwogMjAxMS0xMC0x
MSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBT
d2l0Y2ggUmVnaXN0ZXJTaXplZEJvb2xlYW4vZGZnQ29udmVydEpTVmFsdWVUb0ludDMyIHJldHVy
biB0eXBlIHRvIHNpemVfdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiA5NzE2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUyLDEwICs1MiwxNyBAQAogI2RlZmluZSBBU1NFUlRfVkFMSURf
Q09ERV9PRkZTRVQob2Zmc2V0KSAvLyBBbnl0aGluZyBnb2VzIQogI2VuZGlmCiAKLSNpZiBDUFUo
WDg2KSAmJiAhUExBVEZPUk0oV0lOKQotI2RlZmluZSBDQUxMSU5HX0NPTlZFTlRJT05fSVNfQ0RF
Q0wgMQorI2lmIENQVShYODYpICYmIE9TKFdJTikKKyNkZWZpbmUgQ0FMTElOR19DT05WRU5USU9O
X0lTX1NURENBTEwgMQorI2lmbmRlZiBDREVDTAorI2lmIENPTVBJTEVSKE1TVkMpCisjZGVmaW5l
IENERUNMIF9fY2RlY2wKKyNlbHNlCisjZGVmaW5lIENERUNMIF9fYXR0cmlidXRlX18gKChfX2Nk
ZWNsKSkKKyNlbmRpZiAvLyBDT01QSUxFUihNU1ZDKQorI2VuZGlmIC8vIENERUNMCiAjZWxzZQot
I2RlZmluZSBDQUxMSU5HX0NPTlZFTlRJT05fSVNfQ0RFQ0wgMAorI2RlZmluZSBDQUxMSU5HX0NP
TlZFTlRJT05fSVNfU1REQ0FMTCAwCiAjZW5kaWYKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDYs
NDUgKzExMywzOCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIo
bV92YWx1ZSk7CiAgICAgfQogCi0jaWYgQ0FMTElOR19DT05WRU5USU9OX0lTX0NERUNMCi0jaWZu
ZGVmIFNURENBTEwKLSNpZiBDT01QSUxFUihNU1ZDKQotI2RlZmluZSBTVERDQUxMIF9fc3RkY2Fs
bAotI2Vsc2UKLSNkZWZpbmUgU1REQ0FMTCBfX2F0dHJpYnV0ZV9fICgoc3RkY2FsbCkpCi0jZW5k
aWYgLy8gQ09NUElMRVIoTVNWQykKLSNlbmRpZiAvLyBTVERDQUxMCisjaWYgQ0FMTElOR19DT05W
RU5USU9OX0lTX1NURENBTEwKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIHJldHVyblR5cGU+Ci0g
ICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoU1REQ0FMTCAqdmFsdWUpKCkpCisgICAgRnVuY3Rp
b25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKSgpKQogICAgICAgICA6IG1fdmFsdWUoKHZv
aWQqKXZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFt
ZSBhcmdUeXBlMT4KLSAgICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChTVERDQUxMICp2YWx1ZSko
YXJnVHlwZTEpKQorICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2YWx1ZSkoYXJn
VHlwZTEpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKICAgICAgICAg
QVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFtZSBhcmdUeXBlMSwgdHlwZW5hbWUgYXJnVHlw
ZTI+Ci0gICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoU1REQ0FMTCAqdmFsdWUpKGFyZ1R5cGUx
LCBhcmdUeXBlMikpCisgICAgRnVuY3Rpb25QdHIocmV0dXJuVHlwZSAoQ0RFQ0wgKnZhbHVlKShh
cmdUeXBlMSwgYXJnVHlwZTIpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAg
IHsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFtZSBhcmdUeXBlMSwgdHlw
ZW5hbWUgYXJnVHlwZTIsIHR5cGVuYW1lIGFyZ1R5cGUzPgotICAgIEZ1bmN0aW9uUHRyKHJldHVy
blR5cGUgKFNURENBTEwgKnZhbHVlKShhcmdUeXBlMSwgYXJnVHlwZTIsIGFyZ1R5cGUzKSkKKyAg
ICBGdW5jdGlvblB0cihyZXR1cm5UeXBlIChDREVDTCAqdmFsdWUpKGFyZ1R5cGUxLCBhcmdUeXBl
MiwgYXJnVHlwZTMpKQogICAgICAgICA6IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSByZXR1cm5UeXBlLCB0eXBlbmFtZSBhcmdUeXBlMSwgdHlwZW5hbWUg
YXJnVHlwZTIsIHR5cGVuYW1lIGFyZ1R5cGUzLCB0eXBlbmFtZSBhcmdUeXBlND4KLSAgICBGdW5j
dGlvblB0cihyZXR1cm5UeXBlIChTVERDQUxMICp2YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBh
cmdUeXBlMywgYXJnVHlwZTQpKQorICAgIEZ1bmN0aW9uUHRyKHJldHVyblR5cGUgKENERUNMICp2
YWx1ZSkoYXJnVHlwZTEsIGFyZ1R5cGUyLCBhcmdUeXBlMywgYXJnVHlwZTQpKQogICAgICAgICA6
IG1fdmFsdWUoKHZvaWQqKXZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZUdlbmVyYXRvcjMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IzMl82NC5jcHAJKHJldmlzaW9uIDk3MTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzM2LDcgKzEzMzYsNyBAQCB2b2lkIEpJVENvZGVHZW5lcmF0b3I6
OmVtaXRDYWxsKE5vZGUmIG5vCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogCiAgICAgbV9q
aXQuYWRkUHRyKEltbTMyKG1faml0LmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyAq
IHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKLSAgICBtX2ppdC5wdXNoKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Cisg
ICAgbV9qaXQucG9rZShHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIEpJVENvbXBpbGVyOjpD
YWxsIHNsb3dDYWxsID0gbV9qaXQuYXBwZW5kQ2FsbFdpdGhGYXN0RXhjZXB0aW9uQ2hlY2soc2xv
d0NhbGxGdW5jdGlvbiwgYXQobV9jb21waWxlSW5kZXgpLmNvZGVPcmlnaW4pOwogICAgIG1faml0
Lm1vdmUoSW1tMzIobnVtUGFzc2VkQXJncyksIEdQUkluZm86OnJlZ1QxKTsKICAgICBtX2ppdC5h
ZGRQdHIoSW1tMzIobV9qaXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICogc2l6
ZW9mKFJlZ2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lv
biA5NzE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFNwZWN1bGF0ZUJvb2xl
YW5PcGVyYW5kOwogLy8gZnVuY3Rpb25zLCBldGMuCiBjbGFzcyBKSVRDb2RlR2VuZXJhdG9yIHsK
IHByb3RlY3RlZDoKLSAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIgVHJ1
c3RlZEltbTMyOworICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMiBUcnVzdGVk
SW1tMzI7CiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgSW1tMzI7CiAKICAgICAv
LyBUaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgdG8gc2V0IHByaW9yaXRpZXMgZm9yIHNwaWxsIG9y
ZGVyIGZvcgpAQCAtMTA1Niw4ICsxMDU2LDggQEAgcHJvdGVjdGVkOgogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VTUyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIGludCBzdGFydENvbnN0YW50LCBpbnQgbnVtQ29uc3RhbnRzKQogICAg
IHsKLSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG51bUNvbnN0
YW50cyksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIG1faml0Lm1vdmUoSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKKyAgICAgICAgbV9qaXQubW92ZShJbW0zMihudW1Db25zdGFudHMpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjIpOworICAgICAgICBtX2ppdC5tb3ZlKEltbTMyKHN0YXJ0Q29uc3RhbnQpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogCiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKQEAg
LTEyMjEsMTkgKzEyMjEsNTMgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgbV9qaXQuc3dhcChk
ZXN0QSwgZGVzdEIpOwogICAgIH0KIAorICAgIHVuc2lnbmVkIG1fY2FsbEFyZ3VtZW50SW5kZXg7
CisgICAgdm9pZCByZXNldENhbGxBcmd1bWVudHMoKSB7IG1fY2FsbEFyZ3VtZW50SW5kZXggPSAw
OyB9CisKKyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2luZyBpbnRlcm5hbGx5IHRvIGltcGxl
bWVudCB0aGUgY2FsbE9wZXJhdGlvbiBtZXRob2RzLgorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50
KEdQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faml0LnBva2UodmFsdWUsIG1fY2FsbEFy
Z3VtZW50SW5kZXgrKyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50KEdQUlJlZyB0
YWcsIEdQUlJlZyBwYXlsb2FkKQorICAgIHsKKyAgICAgICAgbV9qaXQucG9rZShwYXlsb2FkLCBt
X2NhbGxBcmd1bWVudEluZGV4KyspOworICAgICAgICBtX2ppdC5wb2tlKHRhZywgbV9jYWxsQXJn
dW1lbnRJbmRleCsrKTsKKyAgICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQoSW1tMzIgaW1t
KQorICAgIHsKKyAgICAgICAgbV9qaXQucG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7
CisgICAgfQorICAgIHZvaWQgYWRkQ2FsbEFyZ3VtZW50Qm94ZWQoSW1tMzIgaW1tKQorICAgIHsK
KyAgICAgICAgbV9qaXQucG9rZShpbW0sIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7CisgICAgICAg
IG1faml0LnBva2UoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSwgbV9jYWxsQXJndW1l
bnRJbmRleCsrKTsKKyAgICB9CisgICAgdm9pZCBhZGRDYWxsQXJndW1lbnQodm9pZCogcG9pbnRl
cikKKyAgICB7CisgICAgICAgIG1faml0LnBva2UoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIo
cG9pbnRlciksIG1fY2FsbEFyZ3VtZW50SW5kZXgrKyk7CisgICAgfQorICAgIHZvaWQgYWRkQ2Fs
bEFyZ3VtZW50KEZQUlJlZyB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faml0LnN0b3JlRG91Ymxl
KHZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIG1fY2FsbEFyZ3VtZW50SW5kZXggKiBzaXplb2YgKHZvaWQqKSkpOworICAgICAgICBt
X2NhbGxBcmd1bWVudEluZGV4ICs9IHNpemVvZihkb3VibGUpIC8gc2l6ZW9mKHZvaWQqKTsKKyAg
ICB9CisKICAgICAvLyBUaGVzZSBtZXRob2RzIGFkZCBjYWxscyB0byBDKysgaGVscGVyIGZ1bmN0
aW9ucy4KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9u
X0VQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIHZv
aWQqIHBvaW50ZXIpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNoKEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KHBvaW50ZXIpKSk7Ci0gICAgICAgIG1faml0
LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1
bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50ZXIpOwogCiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
VGFnLCByZXN1bHRQYXlsb2FkKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBH
UFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzEsIHZvaWQqIHBvaW50ZXIpCiAgICAgewot
ICAgICAgICBtX2ppdC5wdXNoKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIocmVpbnRlcnByZXRf
Y2FzdDxpbnQ+KHBvaW50ZXIpKSk7Ci0gICAgICAgIG1faml0LnB1c2goYXJnMSk7Ci0gICAgICAg
IG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQocG9pbnRlcik7CiAKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQp
OwogICAgIH0KQEAgLTEyNDMsOCArMTI3Nyw5IEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUCBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMSkKICAg
ICB7Ci0gICAgICAgIG1faml0LnB1c2goYXJnMSk7Ci0gICAgICAgIG1faml0LnB1c2goR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXls
b2FkKTsKICAgICB9CkBAIC0xMjU4LDM1ICsxMjkzLDM3IEBAIHByb3RlY3RlZDoKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FUFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgdm9pZCogcG9p
bnRlciwgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNoKEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tMzIoc2l6ZSkpOwotICAgICAgICBtX2ppdC5wdXNoKEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tMzIocmVpbnRlcnByZXRfY2FzdDxpbnQ+KHBvaW50ZXIpKSk7Ci0gICAgICAgIG1f
aml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50ZXIpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoSW1tMzIoc2l6ZSkpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0
aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXls
b2FkKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09w
ZXJhdGlvbl9FU1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5
bG9hZCwgaW50IHN0YXJ0Q29uc3RhbnQsIGludCBudW1Db25zdGFudHMpCiAgICAgewotICAgICAg
ICBtX2ppdC5wdXNoKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobnVtQ29uc3RhbnRzKSk7Ci0g
ICAgICAgIG1faml0LnB1c2goSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihzdGFydENvbnN0YW50
KSk7Ci0gICAgICAgIG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAg
ICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEltbTMyKHN0
YXJ0Q29uc3RhbnQpKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEltbTMyKG51bUNvbnN0YW50
cykpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSlAgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIG1faml0
LnB1c2goSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PGludD4ocG9p
bnRlcikpKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcxVGFnKTsKLSAgICAgICAgbV9qaXQucHVz
aChhcmcxUGF5bG9hZCk7Ci0gICAgICAgIG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzFUYWcsIGFyZzFQYXlsb2FkKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KHBvaW50
ZXIpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FSlAgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5w
dXNoKGFyZzIpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzFUYWcpOwotICAgICAgICBtX2ppdC5w
dXNoKGFyZzFQYXlsb2FkKTsKLSAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
Mik7CiAKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOwogICAgIH0KQEAgLTEzMDAs
ODkgKzEzMzcsODcgQEAgcHJvdGVjdGVkOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNoKGFyZzFUYWcpOwotICAgICAgICBtX2ppdC5w
dXNoKGFyZzFQYXlsb2FkKTsKLSAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3Rlcik7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJn
dW1lbnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQ
YXlsb2FkKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RG
R09wZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7Ci0gICAgICAgIG1f
aml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKIAogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnB1c2goYXJnMSk7Ci0gICAgICAg
IG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENh
bGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOwogCiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09w
ZXJhdGlvbl9FSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxVGFnLCBHUFJS
ZWcgYXJnMVBheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNoKGFyZzFUYWcpOwotICAg
ICAgICBtX2ppdC5wdXNoKGFyZzFQYXlsb2FkKTsKLSAgICAgICAgbV9qaXQucHVzaChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywgYXJnMVBheWxvYWQpOwogCiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihTX0RGR09wZXJh
dGlvbl9FSkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVn
IGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsK
LSAgICAgICAgbV9qaXQucHVzaChhcmcyVGFnKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcyUGF5
bG9hZCk7Ci0gICAgICAgIG1faml0LnB1c2goYXJnMVRhZyk7Ci0gICAgICAgIG1faml0LnB1c2go
YXJnMVBheWxvYWQpOwotICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxVGFnLCBhcmcxUGF5bG9hZCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFn
LCBhcmcyUGF5bG9hZCk7CiAKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VKSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVn
IGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkKQogICAgIHsK
LSAgICAgICAgbV9qaXQucHVzaChhcmcyVGFnKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcyUGF5
bG9hZCk7Ci0gICAgICAgIG1faml0LnB1c2goYXJnMVRhZyk7Ci0gICAgICAgIG1faml0LnB1c2go
YXJnMVBheWxvYWQpOwotICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyKTsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmcxVGFnLCBhcmcxUGF5bG9hZCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFn
LCBhcmcyUGF5bG9hZCk7CiAKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3BlcmF0aW9uX0VK
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIgaW1t
KQogICAgIHsKLSAgICAgICAgbV9qaXQucHVzaChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgIG1faml0LnB1c2goaW1tKTsKLSAgICAgICAg
bV9qaXQucHVzaChhcmcxVGFnKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcxUGF5bG9hZCk7Ci0g
ICAgICAgIG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzFUYWcsIGFyZzFQ
YXlsb2FkKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50Qm94ZWQoaW1tKTsKIAogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFRhZywgcmVzdWx0UGF5bG9hZCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMiBpbW0sIEdQUlJl
ZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNo
KGFyZzJUYWcpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzJQYXlsb2FkKTsKLSAgICAgICAgbV9q
aXQucHVzaChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7
Ci0gICAgICAgIG1faml0LnB1c2goaW1tKTsKLSAgICAgICAgbV9qaXQucHVzaChHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnRCb3hlZChpbW0pOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMlRh
ZywgYXJnMlBheWxvYWQpOwogCiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0VGFnLCByZXN1bHRQYXlsb2FkKTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9F
Q0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQpCiAgICAgewotICAg
ICAgICBtX2ppdC5wdXNoKGFyZzJUYWcpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzJQYXlsb2Fk
KTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcxKTsKLSAgICAgICAgbV9qaXQucHVzaChHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAg
ICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyVGFn
LCBhcmcyUGF5bG9hZCk7CiAKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9u
Q2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRUYWcsIHJlc3VsdFBheWxvYWQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VK
UFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcg
YXJnMiwgdm9pZCogcG9pbnRlcikKICAgICB7Ci0gICAgICAgIG1faml0LnB1c2goSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PGludD4ocG9pbnRlcikpKTsKLSAgICAg
ICAgbV9qaXQucHVzaChhcmcyKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcxVGFnKTsKLSAgICAg
ICAgbV9qaXQucHVzaChhcmcxUGF5bG9hZCk7Ci0gICAgICAgIG1faml0LnB1c2goR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAg
ICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzFUYWcsIGFyZzFQYXlsb2FkKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQocG9pbnRlcik7CiAKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9
CkBAIC0xMzkyLDIyICsxNDI3LDIxIEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQ0pKIG9wZXJhdGlvbiwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIEdQUlJlZyBhcmcz
VGFnLCBHUFJSZWcgYXJnM1BheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5wdXNoKGFyZzNU
YWcpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzNQYXlsb2FkKTsKLSAgICAgICAgbV9qaXQucHVz
aChhcmcyVGFnKTsKLSAgICAgICAgbV9qaXQucHVzaChhcmcyUGF5bG9hZCk7Ci0gICAgICAgIG1f
aml0LnB1c2goYXJnMSk7Ci0gICAgICAgIG1faml0LnB1c2goR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMlRhZywgYXJnMlBheWxvYWQp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnM1RhZywgYXJnM1BheWxvYWQpOwogCiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRVBa
SiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNUYWcsIEdQ
UlJlZyBhcmczUGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0LnB1c2goYXJnM1RhZyk7Ci0g
ICAgICAgIG1faml0LnB1c2goYXJnM1BheWxvYWQpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzIp
OwotICAgICAgICBtX2ppdC5wdXNoKGFyZzEpOwotICAgICAgICBtX2ppdC5wdXNoKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnM1RhZywgYXJnM1BheWxvYWQpOwogCiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQpA
QCAtMTQxOCw5ICsxNDUyLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihEX0RGR09wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQpCiAgICAgewotICAgICAgICBtX2pp
dC5wdXNoKGFyZzFUYWcpOwotICAgICAgICBtX2ppdC5wdXNoKGFyZzFQYXlsb2FkKTsKLSAgICAg
ICAgbV9qaXQucHVzaChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHJlc2V0
Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMVRhZywgYXJnMVBheWxv
YWQpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGwgPSBhcHBlbmRDYWxsV2l0aEV4
Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgICAgIG1faml0LmFzc2VtYmxlcigpLmZzdHBs
KDAsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CkBAIC0xNDI5LDIxICsxNDYz
LDEzIEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihEX0RGR09wZXJhdGlvbl9ERCBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEZQUlJlZyBh
cmcxLCBGUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1t
MzIoMiAqIHNpemVvZihkb3VibGUpKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUoYXJnMiwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
SklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCBzaXplb2YoZG91YmxlKSkpOwotICAg
ICAgICBtX2ppdC5zdG9yZURvdWJsZShhcmcxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFy
Z3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAKICAgICAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbCA9IG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uKTsKLSNp
ZiAhQ0FMTElOR19DT05WRU5USU9OX0lTX0NERUNMCi0gICAgICAgIC8vIEZvciBEX0RGR09wZXJh
dGlvbl9ERCBjYWxscyB3ZSdyZSBjdXJyZW50bHkgdXNpbmcgdGhlIHN5c3RlbSdzIGRlZmF1bHQg
Y2FsbGluZyBjb252ZW50aW9uLgotICAgICAgICAvLyBPbiBNYWMgT1MgdGhlIGFyZ3VtZW50cyBh
cmUgc3RpbGwgb24gdGhlIHN0YWNrIGF0IHRoaXMgcG9pbnQsIG9uIFdpbmRvd3MgdGhleSBhcmUg
bm90LgotICAgICAgICAvLyBNYWtlIG90aGVyIHBsYXRmb3JtcyBtYXRjaCB0aGUgTWFjIGhlcmUs
IHNpbmNlIHdlJ2xsIG5lZWQgc29tZSBzY3JhdGNoIHNwYWNlIGZvciB0aGUgZnN0cGwsIGJlbG93
LgotICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKDIgKiBzaXplb2YoZG91YmxlKSks
IEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0jZW5kaWYKICAgICAgICAgbV9q
aXQuYXNzZW1ibGVyKCkuZnN0cGwoMCwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIsIHJlc3VsdCk7Ci0gICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoMiAqIHNp
emVvZihkb3VibGUpKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLQogICAg
ICAgICByZXR1cm4gY2FsbDsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29tcGlsZXIzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlcjMyXzY0LmNwcAkocmV2aXNpb24gOTcxNjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyMzJfNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzUsOCArNTM1LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUJvZHkoKQogICAgICAgICAvLyBvZiB0aGUgY2FsbCBvdXQgZnJvbSBKSVQgY29kZSB0aGF0IHRo
cmV3IHRoZSBleGNlcHRpb247IHRoaXMgaXMgc3RpbGwKICAgICAgICAgLy8gYXZhaWxhYmxlIG9u
IHRoZSBzdGFjaywganVzdCBiZWxvdyB0aGUgc3RhY2sgcG9pbnRlciEKICAgICAgICAgcGVlayhH
UFJJbmZvOjphcmd1bWVudEdQUjEsIC0xKTsKLSAgICAgICAgcHVzaChHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwotICAgICAgICBwdXNoKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAg
ICAgcG9rZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIHBva2UoR1BSSW5m
bzo6YXJndW1lbnRHUFIxLCAxKTsKICAgICAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChj
YWxsKCksIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIpKTsKICAgICAgICAgLy8gbG9va3VwRXhjZXB0
aW9uSGFuZGxlciBsZWF2ZXMgdGhlIGhhbmRsZXIgQ2FsbEZyYW1lKiBpbiB0aGUgcmV0dXJuVmFs
dWVHUFIsCiAgICAgICAgIC8vIGFuZCB0aGUgYWRkcmVzcyBvZiB0aGUgaGFuZGxlciBpbiByZXR1
cm5WYWx1ZUdQUjIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDk3MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2VuZGlm
CiAKICNpZiBDUFUoWDg2XzY0KQorCiAjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRV
Uk5fQUREUkVTUyhmdW5jdGlvbiwgcmVnaXN0ZXIpIFwKICAgICBhc20oIFwKICAgICAiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhmdW5jdGlvbikgIlxuIiBcCkBAIC01MCwxOCArNTEsMzcgQEAKICAg
ICAgICAgIm1vdiAoJXJzcCksICUiIFNUUklOR0laRShyZWdpc3RlcikgIlxuIiBcCiAgICAgICAg
ICJqbXAgIiBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIg
XAogICAgICk7CisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19F
KGZ1bmN0aW9uKSAgICBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rp
b24sIHJzaSkKKyNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VD
SShmdW5jdGlvbikgIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlv
biwgcmN4KQorI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpD
SShmdW5jdGlvbikgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9u
LCByOCkKKwogI2VsaWYgQ1BVKFg4NikKLSNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JF
VFVSTl9BRERSRVNTKGZ1bmN0aW9uLCByZWdpc3RlcikgXAorCisjZGVmaW5lIEZVTkNUSU9OX1dS
QVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgb2Zmc2V0KSBcCiAgICAgYXNtKCBc
CiAgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIgXAogICAgIFNZTUJP
TF9TVFJJTkcoZnVuY3Rpb24pICI6IiAiXG4iIFwKLSAgICAgICAgInB1c2ggKCVlc3ApXG4iIFwK
KyAgICAgICAgIm1vdiAoJWVzcCksICVlYXhcbiIgXAorICAgICAgICAibW92ICVlYXgsICIgU1RS
SU5HSVpFKG9mZnNldCkgIiglZXNwKVxuIiBcCiAgICAgICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
KGZ1bmN0aW9uKSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAogICAgICk7CisjZGVmaW5lIEZV
TkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSAgICBGVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIDgpCisjZGVmaW5lIEZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0koZnVuY3Rpb24pICBGVU5DVElPTl9X
UkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIDE2KQorI2RlZmluZSBGVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShmdW5jdGlvbikgRlVOQ1RJT05fV1JB
UFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCAyNCkKKwogI2VuZGlmCi0jZGVmaW5l
IEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkcyX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uKSBGVU5D
VElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIHJzaSkKLSNkZWZpbmUg
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzRfUkVUVVJOX0FERFJFU1MoZnVuY3Rpb24pIEZVTkNU
SU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgcmN4KQotI2RlZmluZSBG
VU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHNV9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbikgRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCByOCkKKworI2RlZmluZSBQ
X0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FKGZ1bmN0aW9uKSBcCit2b2lk
KiBERkdfT1BFUkFUSU9OIGZ1bmN0aW9uIyNXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqLCBS
ZXR1cm5BZGRyZXNzUHRyKTsgXAorRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0UoZnVuY3Rpb24pCisKKyNkZWZpbmUgSl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FE
RFJFU1NfRUNJKGZ1bmN0aW9uKSBcCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGZ1bmN0
aW9uIyNXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwg
UmV0dXJuQWRkcmVzc1B0cik7IFwKK0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVT
U19FQ0koZnVuY3Rpb24pCisKKyNkZWZpbmUgVl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJO
X0FERFJFU1NfRUpDSShmdW5jdGlvbikgXAordm9pZCBERkdfT1BFUkFUSU9OIGZ1bmN0aW9uIyNX
aXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgSWRl
bnRpZmllciosIFJldHVybkFkZHJlc3NQdHIpOyBcCitGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVU
VVJOX0FERFJFU1NfRUpDSShmdW5jdGlvbikKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0yNTUsMTUgKzI3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhl
YywgKnByb3BlcnR5TmFtZSwgc2xvdCkpOwogfQogCi0jaWYgQ1BVKFg4Nl82NCkKLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0TWV0aG9kT3B0aW1pemVXaXRoUmV0dXJu
QWRkcmVzcyhFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgUmV0dXJuQWRkcmVzc1B0
cik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHNF9SRVRVUk5fQUREUkVTUyhvcGVyYXRpb25H
ZXRNZXRob2RPcHRpbWl6ZSk7CitKX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVT
U19FQ0kob3BlcmF0aW9uR2V0TWV0aG9kT3B0aW1pemUpOwogRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRNZXRob2RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSNlbGlmIENQVShYODYpCi1FbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldE1ldGhvZE9wdGltaXplV2l0aFJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0ciwgRXhlY1N0YXRlKiwgSlNDZWxsKiwgSWRlbnRpZmllciopOwot
RlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzRfUkVUVVJOX0FERFJFU1Mob3BlcmF0aW9uR2V0TWV0
aG9kT3B0aW1pemUpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRN
ZXRob2RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcywgRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5
TmFtZSkKLSNlbmRpZgogewogICAgIEpTVmFsdWUgYmFzZVZhbHVlKGJhc2UpOwogICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CkBAIC0yNzgsMTUgKzI5MSw4IEBAIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CiB9CiAKLSNpZiBDUFUoWDg2XzY0KQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgSWRlbnRpZmllciosIFJldHVybkFkZHJlc3NQdHIpOwotRlVOQ1RJT05fV1JB
UFBFUl9XSVRIX0FSRzRfUkVUVVJOX0FERFJFU1Mob3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCk7
CitKX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0kob3BlcmF0aW9uR2V0
QnlJZEJ1aWxkTGlzdCk7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
dEJ5SWRCdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCog
YmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCi0jZWxpZiBDUFUoWDg2KQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciwg
RXhlY1N0YXRlKiwgSlNDZWxsKiwgSWRlbnRpZmllciopOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X0FSRzRfUkVUVVJOX0FERFJFU1Mob3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdCk7Ci1FbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRCdWlsZExpc3RXaXRoUmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCi0jZW5kaWYKIHsKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUp
OwpAQCAtMjk4LDE1ICszMDQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCi0jaWYgQ1BV
KFg4Nl82NCkKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFBy
b3RvQnVpbGRMaXN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSWRlbnRp
ZmllciosIFJldHVybkFkZHJlc3NQdHIpOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzRfUkVU
VVJOX0FERFJFU1Mob3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KTsKK0pfRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWls
ZExpc3QpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkUHJv
dG9CdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFz
ZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCi0jZWxpZiBDUFUoWDg2KQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeUlkUHJvdG9CdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRy
LCBFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJ
VEhfQVJHNF9SRVRVUk5fQUREUkVTUyhvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExpc3QpOwot
RW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExp
c3RXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCi0jZW5k
aWYKIHsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChiYXNlVmFsdWUpOwpAQCAtMzE4LDE1ICszMTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCi0jaWYgQ1BVKFg4Nl82NCkKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgSlNDZWxsKiwg
SWRlbnRpZmllciosIFJldHVybkFkZHJlc3NQdHIpOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FS
RzRfUkVUVVJOX0FERFJFU1Mob3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKTsKK0pfRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUp
OwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVX
aXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmll
ciogcHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0jZWxpZiBD
UFUoWDg2KQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyLCBFeGVjU3RhdGUqLCBKU0Nl
bGwqLCBJZGVudGlmaWVyKik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHNF9SRVRVUk5fQURE
UkVTUyhvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBJZGVu
dGlmaWVyKiBwcm9wZXJ0eU5hbWUpCi0jZW5kaWYKIHsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZShi
YXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwpAQCAtNDAzLDE1ICszOTUs
OCBAQCB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgSlNWYWx1
ZShiYXNlKS5wdXREaXJlY3QoZXhlYywgKnByb3BlcnR5TmFtZSwgSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSksIHNsb3QpOwogfQogCi0jaWYgQ1BVKFg4Nl82NCkKLXZvaWQgREZHX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgSWRlbnRpZmllciosIFJldHVybkFkZHJl
c3NQdHIpOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzVfUkVUVVJOX0FERFJFU1Mob3BlcmF0
aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKK1ZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVS
Tl9BRERSRVNTX0VKQ0kob3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXplKTsKIHZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVz
cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBi
YXNlLCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKLSNlbGlmIENQVShYODYpCi12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJ
ZFN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciwgRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKLUZVTkNUSU9OX1dS
QVBQRVJfV0lUSF9BUkc1X1JFVFVSTl9BRERSRVNTKG9wZXJhdGlvblB1dEJ5SWRTdHJpY3RPcHRp
bWl6ZSk7Ci12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdE9wdGltaXpl
V2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNlLCBJZGVu
dGlmaWVyKiBwcm9wZXJ0eU5hbWUpCi0jZW5kaWYKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUoYmFzZSk7
CkBAIC00MjYsMTUgKzQxMSw4IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlk
U3RyaWMKICAgICAgICAgc3R1YkluZm8uc2VlbiA9IHRydWU7CiB9CiAKLSNpZiBDUFUoWDg2XzY0
KQotdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdHJpY3RPcHRpbWl6ZVdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqLCBJZGVu
dGlmaWVyKiwgUmV0dXJuQWRkcmVzc1B0cik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHNV9S
RVRVUk5fQUREUkVTUyhvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemUpOworVl9GVU5D
VElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpDSShvcGVyYXRpb25QdXRCeUlkTm9u
U3RyaWN0T3B0aW1pemUpOwogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25T
dHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFt
ZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotI2VsaWYgQ1BVKFg4NikKLXZvaWQg
REZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyLCBFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlND
ZWxsKiwgSWRlbnRpZmllciopOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzVfUkVUVVJOX0FE
RFJFU1Mob3BlcmF0aW9uUHV0QnlJZE5vblN0cmljdE9wdGltaXplKTsKLXZvaWQgREZHX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkTm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MsIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBKU0NlbGwqIGJhc2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFt
ZSkKLSNlbmRpZgogewogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZShiYXNlKTsKQEAgLTQ0OSwxNSArNDI3LDgg
QEAgdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWROb25TdAogICAgICAgICBzdHVi
SW5mby5zZWVuID0gdHJ1ZTsKIH0KIAotI2lmIENQVShYODZfNjQpCi12b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9wdGltaXplV2l0aFJldHVybkFkZHJlc3Mo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqLCBSZXR1cm5B
ZGRyZXNzUHRyKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkc1X1JFVFVSTl9BRERSRVNTKG9w
ZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZSk7CitWX0ZVTkNUSU9OX1dSQVBQRVJf
V0lUSF9SRVRVUk5fQUREUkVTU19FSkNJKG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRp
bWl6ZSk7CiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdFN0cmljdE9w
dGltaXplV2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0jZWxpZiBDUFUoWDg2KQotdm9pZCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIsIEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwq
LCBJZGVudGlmaWVyKik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHNV9SRVRVUk5fQUREUkVT
UyhvcGVyYXRpb25QdXRCeUlkRGlyZWN0U3RyaWN0T3B0aW1pemUpOwotdm9pZCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5SWREaXJlY3RTdHJpY3RPcHRpbWl6ZVdpdGhSZXR1cm5BZGRyZXNz
KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlO
YW1lKQotI2VuZGlmCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlKGJhc2UpOwpAQCAtNDcyLDE1ICs0NDMs
OCBAQCB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjCiAgICAgICAgIHN0
dWJJbmZvLnNlZW4gPSB0cnVlOwogfQogCi0jaWYgQ1BVKFg4Nl82NCkKLXZvaWQgREZHX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkRGlyZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRk
cmVzcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgSWRlbnRpZmllciosIFJl
dHVybkFkZHJlc3NQdHIpOwotRlVOQ1RJT05fV1JBUFBFUl9XSVRIX0FSRzVfUkVUVVJOX0FERFJF
U1Mob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGltaXplKTsKK1ZfRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKQ0kob3BlcmF0aW9uUHV0QnlJZERpcmVjdE5v
blN0cmljdE9wdGltaXplKTsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkRGly
ZWN0Tm9uU3RyaWN0T3B0aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVyKiBwcm9w
ZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSNlbGlmIENQVShYODYp
Ci12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9wdGlt
aXplV2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciwgRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9B
Ukc1X1JFVFVSTl9BRERSRVNTKG9wZXJhdGlvblB1dEJ5SWREaXJlY3ROb25TdHJpY3RPcHRpbWl6
ZSk7Ci12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZERpcmVjdE5vblN0cmljdE9w
dGltaXplV2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBF
eGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNDZWxsKiBiYXNl
LCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUpCi0jZW5kaWYKIHsKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUo
YmFzZSk7CkBAIC01NTIsMTAgKzUxNiw3IEBAIGFzbSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCiAgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAi
bW92ICglZXNwKSwgJWVjeFxuIgotICAgICJtb3YgJWVkaSwgKCVlc3ApXG4iCi0gICAgImxlYSAt
NCglZXNwKSwgJWVzcFxuIgotICAgICJtb3YgJWVjeCwgKCVlc3ApXG4iCisgICAgIm1vdiAlZWRp
LCA0KCVlc3ApXG4iCiAgICAgImptcCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKICk7CiAjZW5kaWYKQEAgLTY1OSwyOCArNjIwLDE0IEBA
IGlubGluZSB2b2lkKiBsaW5rRm9yKEV4ZWNTdGF0ZSogZXhlY0NhbGwKICAgICByZXR1cm4gY29k
ZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOwogfQogCi0jaWYgQ1BVKFg4Nl82NCkKLXZvaWQqIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGxXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUq
LCBSZXR1cm5BZGRyZXNzUHRyKTsKLUZVTkNUSU9OX1dSQVBQRVJfV0lUSF9BUkcyX1JFVFVSTl9B
RERSRVNTKG9wZXJhdGlvbkxpbmtDYWxsKTsKK1BfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVS
Tl9BRERSRVNTX0Uob3BlcmF0aW9uTGlua0NhbGwpOwogdm9pZCogREZHX09QRVJBVElPTiBvcGVy
YXRpb25MaW5rQ2FsbFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotI2VsaWYgQ1BVKFg4NikKLXZvaWQqIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGxXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MsIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSk7Ci1GVU5DVElPTl9XUkFQ
UEVSX1dJVEhfQVJHMl9SRVRVUk5fQUREUkVTUyhvcGVyYXRpb25MaW5rQ2FsbCk7Ci12b2lkKiBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxpbmtDYWxsV2l0aFJldHVybkFkZHJlc3MoUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzLCBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUpCi0jZW5kaWYKIHsK
ICAgICByZXR1cm4gbGlua0ZvcihleGVjQ2FsbGVlLCByZXR1cm5BZGRyZXNzLCBDb2RlRm9yQ2Fs
bCk7CiB9CiAKLSNpZiBDUFUoWDg2XzY0KQotdm9pZCogREZHX09QRVJBVElPTiBvcGVyYXRpb25M
aW5rQ29uc3RydWN0V2l0aFJldHVybkFkZHJlc3MoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0
cik7Ci1GVU5DVElPTl9XUkFQUEVSX1dJVEhfQVJHMl9SRVRVUk5fQUREUkVTUyhvcGVyYXRpb25M
aW5rQ29uc3RydWN0KTsKK1BfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0Uo
b3BlcmF0aW9uTGlua0NvbnN0cnVjdCk7CiB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkxp
bmtDb25zdHJ1Y3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSNlbGlmIENQVShYODYpCi12b2lkKiBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkxpbmtDb25zdHJ1Y3RXaXRoUmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MsIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSk7Ci1GVU5DVElPTl9X
UkFQUEVSX1dJVEhfQVJHMl9SRVRVUk5fQUREUkVTUyhvcGVyYXRpb25MaW5rQ29uc3RydWN0KTsK
LXZvaWQqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NvbnN0cnVjdFdpdGhSZXR1cm5BZGRy
ZXNzKFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcywgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
KQotI2VuZGlmCiB7CiAgICAgcmV0dXJuIGxpbmtGb3IoZXhlY0NhbGxlZSwgcmV0dXJuQWRkcmVz
cywgQ29kZUZvckNvbnN0cnVjdCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gOTcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBl
bnVtIFB1dEtpbmQgeyBEaXJlY3QsIE5vdERpcmVjdCB9OwogCiBleHRlcm4gIkMiIHsKIAotI2lm
IENBTExJTkdfQ09OVkVOVElPTl9JU19DREVDTAotI2RlZmluZSBERkdfT1BFUkFUSU9OIF9fYXR0
cmlidXRlX18gKChzdGRjYWxsKSkKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAor
I2RlZmluZSBERkdfT1BFUkFUSU9OIENERUNMCiAjZWxzZQogI2RlZmluZSBERkdfT1BFUkFUSU9O
CiAjZW5kaWYKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpW
X0RGR09wZXJhdAogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9F
SkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgSWRlbnRpZmllciopOwog
dHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShFeGVjU3Rh
dGUqLCB2b2lkKiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19P
UEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FQVpKKShFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50
MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwotdHlwZWRlZiBkb3VibGUgKCpEX0RGR09wZXJhdGlvbl9E
RCkoZG91YmxlLCBkb3VibGUpOyAvLyBVc2luZyBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbnMh
Cit0eXBlZGVmIGRvdWJsZSBERkdfT1BFUkFUSU9OICgqRF9ERkdPcGVyYXRpb25fREQpKGRvdWJs
ZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlv
bl9FSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkKiBERkdfT1BF
UkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gOTcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxNiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKKy8vIE9uIFdpbmRvd3Mgd2UgbmVlZCB0byB3
cmFwIGZtb2Q7IG9uIG90aGVyIHBsYXRmb3JtcyB3ZSBjYW4gY2FsbCBpdCBkaXJlY3RseS4KKyNp
ZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorc3RhdGljIGRvdWJsZSBDREVDTCBmbW9k
V2l0aENEZWNsKGRvdWJsZSB4LCBkb3VibGUgeSkKK3sKKyAgICByZXR1cm4gZm1vZCh4LCB5KTsK
K30KKyNlbHNlCisjZGVmaW5lIGZtb2RXaXRoQ0RlY2wgZm1vZAorI2VuZGlmCisKICNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQogCiB0ZW1wbGF0ZTxib29sIHN0cmljdD4KQEAgLTEwOTUsNyArMTEwNSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAg
IAogICAgICAgICAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKIAotICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihmbW9kLCByZXN1bHQuZnByKCksIG9wMUZQUiwgb3AyRlBSKTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24oZm1vZFdpdGhDRGVjbCwgcmVzdWx0LmZwcigpLCBvcDFGUFIsIG9w
MkZQUik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnBy
KCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="108114"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>