<?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>20755</bug_id>
          
          <creation_ts>2008-09-09 16:24:10 -0700</creation_ts>
          <short_desc>Create an X86 namespace for register names and other things</short_desc>
          <delta_ts>2008-09-09 18:14:08 -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="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90701</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 16:24:10 -0700</bug_when>
    <thetext>I have a patch to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90702</commentid>
    <comment_count>1</comment_count>
      <attachid>23305</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 16:29:35 -0700</bug_when>
    <thetext>Created attachment 23305
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90706</commentid>
    <comment_count>2</comment_count>
      <attachid>23305</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-09 17:00:16 -0700</bug_when>
    <thetext>Comment on attachment 23305
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90713</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 18:14:08 -0700</bug_when>
    <thetext>Landed in r36307.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23305</attachid>
            <date>2008-09-09 16:29:35 -0700</date>
            <delta_ts>2008-09-09 17:00:16 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>x86-namespace.diff</filename>
            <type>text/plain</type>
            <size>92028</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2MzAy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMDgtMDkt
MDkgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwNzU1OiBDcmVhdGUg
YW4gWDg2IG5hbWVzcGFjZSBmb3IgcmVnaXN0ZXIgbmFtZXMgYW5kIG90aGVyIHRoaW5ncworICAg
ICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU1PgorCisg
ICAgICAgIENyZWF0ZSBhbiBYODYgbmFtZXNwYWNlIHRvIHB1dCBYODYgcmVnaXN0ZXIgbmFtZXMu
IFBlcmhhcHMgSSB3aWxsIG1vdmUKKyAgICAgICAgb3Bjb2RlIG5hbWVzIGhlcmUgbGF0ZXIgYXMg
d2VsbC4KKworICAgICAgICAqIFZNL0NUSS5jcHA6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdEdl
dEFyZyk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdEdldFB1dEFyZyk6CisgICAgICAgIChKU0M6
OkNUSTo6ZW1pdFB1dEFyZyk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdFB1dEFyZ0NvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0UHV0Q1RJUGFyYW0pOgorICAgICAgICAoSlNDOjpD
VEk6OmVtaXRHZXRDVElQYXJhbSk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdFB1dFRvQ2FsbEZy
YW1lSGVhZGVyKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
cik6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdFB1dFJlc3VsdCk6CisgICAgICAgIChKU0M6OkNU
STo6ZW1pdERlYnVnRXhjZXB0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbXMpOgorICAgICAgICAoSlNDOjpDVEk6OmNvbXBpbGVPcENhbGwpOgor
ICAgICAgICAoSlNDOjpDVEk6OmVtaXRTbG93U2NyaXB0Q2hlY2spOgorICAgICAgICAoSlNDOjpD
VEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpDVEk6OnByaXZhdGVD
b21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQ29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZik6CisgICAgICAgIChK
U0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAoSlNDOjpDVEk6
OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRl
Q29tcGlsZVB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQXJyYXlM
ZW5ndGhUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlU3RyaW5nTGVuZ3Ro
VHJhbXBvbGluZSk6CisgICAgICAgIChKU0M6OkNUSTo6Y29tcGlsZVJlZ0V4cCk6CisgICAgICAg
ICogVk0vQ1RJLmg6CisgICAgICAgICogbWFzbS9YODZBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpT
Qzo6WDg2OjopOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmVtaXRNb2RSbV9ybSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6ZW1pdE1vZFJtX3JtX1VuY2hlY2tlZCk6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6ZW1pdE1vZFJtX3Jtc2liKToKKyAgICAgICAgKiB3cmVj
L1dSRUMuY3BwOgorICAgICAgICAoSlNDOjpXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZU5vbkdyZWVk
eVF1YW50aWZpZXIpOgorICAgICAgICAoSlNDOjpXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUdyZWVk
eVF1YW50aWZpZXIpOgorICAgICAgICAoSlNDOjpXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZVBhcmVu
dGhlc2VzKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVCYWNrcmVmZXJl
bmNlKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VybmVyYXRlRGlzanVuY3Rpb24p
OgorICAgICAgICAqIHdyZWMvV1JFQy5oOgorCiAyMDA4LTA5LTA5ICBDYW1lcm9uIFp3YXJpY2gg
IDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWlu
aWcuCkluZGV4OiBWTS9DVEkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL0NUSS5jcHAJKHJldmlzaW9u
IDM2MzAxKQorKysgVk0vQ1RJLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDcgKzExNCw3IEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRHZXRBcmcodW5zaWcKICAgICAgICAgSlNWYWx1
ZSoganMgPSBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnNbc3JjXS5qc1ZhbHVlKG1fZXhl
Yyk7CiAgICAgICAgIG1faml0Lm1vdmxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihq
cyksIGRzdCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1faml0Lm1vdmxfbXIoc3JjICogc2l6ZW9m
KFJlZ2lzdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OmVkaSwgZHN0KTsKKyAgICAgICAgbV9qaXQubW92
bF9tcihzcmMgKiBzaXplb2YoUmVnaXN0ZXIpLCBYODY6OmVkaSwgZHN0KTsKIH0KIAogLy8gZ2V0
IGFyZyBwdXRzIGFuIGFyZyBmcm9tIHRoZSBTRiByZWdpc3RlciBhcnJheSBvbnRvIHRoZSBzdGFj
aywgYXMgYW4gYXJnIHRvIGEgY29udGV4dCB0aHJlYWRlZCBmdW5jdGlvbi4KQEAgLTEyMiwyMiAr
MTIyLDIyIEBAIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRHZXRQdXRBcmcodW4KIHsKICAg
ICBpZiAoc3JjIDwgbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSkgewogICAg
ICAgICBKU1ZhbHVlKiBqcyA9IG1fY29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyc1tzcmNdLmpz
VmFsdWUobV9leGVjKTsKLSAgICAgICAgbV9qaXQubW92bF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQ+KGpzKSwgb2Zmc2V0ICsgc2l6ZW9mKHZvaWQqKSwgTWFjcm9Bc3NlbWJsZXI6OmVz
cCk7CisgICAgICAgIG1faml0Lm1vdmxfaTMybShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihq
cyksIG9mZnNldCArIHNpemVvZih2b2lkKiksIFg4Njo6ZXNwKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBtX2ppdC5tb3ZsX21yKHNyYyAqIHNpemVvZihSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVy
OjplZGksIHNjcmF0Y2gpOwotICAgICAgICBtX2ppdC5tb3ZsX3JtKHNjcmF0Y2gsIG9mZnNldCAr
IHNpemVvZih2b2lkKiksIE1hY3JvQXNzZW1ibGVyOjplc3ApOworICAgICAgICBtX2ppdC5tb3Zs
X21yKHNyYyAqIHNpemVvZihSZWdpc3RlciksIFg4Njo6ZWRpLCBzY3JhdGNoKTsKKyAgICAgICAg
bV9qaXQubW92bF9ybShzY3JhdGNoLCBvZmZzZXQgKyBzaXplb2Yodm9pZCopLCBYODY6OmVzcCk7
CiAgICAgfQogfQogCiAvLyBwdXRzIGFuIGFyZyBvbnRvIHRoZSBzdGFjaywgYXMgYW4gYXJnIHRv
IGEgY29udGV4dCB0aHJlYWRlZCBmdW5jdGlvbi4KIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVt
aXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc3JjLCB1bnNpZ25lZCBvZmZzZXQp
CiB7Ci0gICAgbV9qaXQubW92bF9ybShzcmMsIG9mZnNldCArIHNpemVvZih2b2lkKiksIE1hY3Jv
QXNzZW1ibGVyOjplc3ApOworICAgIG1faml0Lm1vdmxfcm0oc3JjLCBvZmZzZXQgKyBzaXplb2Yo
dm9pZCopLCBYODY6OmVzcCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRQdXRB
cmdDb25zdGFudCh1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgb2Zmc2V0KQogewotICAgIG1faml0
Lm1vdmxfaTMybSh2YWx1ZSwgb2Zmc2V0ICsgc2l6ZW9mKHZvaWQqKSwgTWFjcm9Bc3NlbWJsZXI6
OmVzcCk7CisgICAgbV9qaXQubW92bF9pMzJtKHZhbHVlLCBvZmZzZXQgKyBzaXplb2Yodm9pZCop
LCBYODY6OmVzcCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSogQ1RJOjpnZXRDb25zdGFu
dEltbWVkaWF0ZU51bWVyaWNBcmcodW5zaWduZWQgc3JjKQpAQCAtMTUxLDI3ICsxNTEsMjcgQEAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlKiBDVEk6OmdldENvbnN0YW50SQogCiBBTFdBWVNfSU5MSU5F
IHZvaWQgQ1RJOjplbWl0UHV0Q1RJUGFyYW0oTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZnJv
bSwgdW5zaWduZWQgbmFtZSkKIHsKLSAgICBtX2ppdC5tb3ZsX3JtKGZyb20sIG5hbWUgKiBzaXpl
b2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKKyAgICBtX2ppdC5tb3ZsX3JtKGZyb20s
IG5hbWUgKiBzaXplb2Yodm9pZCopLCBYODY6OmVzcCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9p
ZCBDVEk6OmVtaXRHZXRDVElQYXJhbSh1bnNpZ25lZCBuYW1lLCBNYWNyb0Fzc2VtYmxlcjo6UmVn
aXN0ZXJJRCB0bykKIHsKLSAgICBtX2ppdC5tb3ZsX21yKG5hbWUgKiBzaXplb2Yodm9pZCopLCBN
YWNyb0Fzc2VtYmxlcjo6ZXNwLCB0byk7CisgICAgbV9qaXQubW92bF9tcihuYW1lICogc2l6ZW9m
KHZvaWQqKSwgWDg2Ojplc3AsIHRvKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGZyb20sIFJl
Z2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCiB7Ci0gICAgbV9qaXQubW92
bF9ybShmcm9tLCAtKChtX2NvZGVCbG9jay0+bnVtTG9jYWxzICsgUmVnaXN0ZXJGaWxlOjpDYWxs
RnJhbWVIZWFkZXJTaXplKSAtIGVudHJ5KSAqIHNpemVvZihSZWdpc3RlciksIE1hY3JvQXNzZW1i
bGVyOjplZGkpOworICAgIG1faml0Lm1vdmxfcm0oZnJvbSwgLSgobV9jb2RlQmxvY2stPm51bUxv
Y2FscyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgLSBlbnRyeSkgKiBzaXpl
b2YoUmVnaXN0ZXIpLCBYODY6OmVkaSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVt
aXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyRW50
cnkgZW50cnksIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHRvKQogewotICAgIG1faml0Lm1v
dmxfbXIoLSgobV9jb2RlQmxvY2stPm51bUxvY2FscyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1l
SGVhZGVyU2l6ZSkgLSBlbnRyeSkgKiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWRpLCB0byk7CisgICAgbV9qaXQubW92bF9tcigtKChtX2NvZGVCbG9jay0+bnVtTG9jYWxzICsg
UmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIGVudHJ5KSAqIHNpemVvZihSZWdp
c3RlciksIFg4Njo6ZWRpLCB0byk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRQ
dXRSZXN1bHQodW5zaWduZWQgZHN0LCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBmcm9tKQog
ewotICAgIG1faml0Lm1vdmxfcm0oZnJvbSwgZHN0ICogc2l6ZW9mKFJlZ2lzdGVyKSwgTWFjcm9B
c3NlbWJsZXI6OmVkaSk7CisgICAgbV9qaXQubW92bF9ybShmcm9tLCBkc3QgKiBzaXplb2YoUmVn
aXN0ZXIpLCBYODY6OmVkaSk7CiAgICAgLy8gRklYTUU6ICNpZm5kZWYgTkRFQlVHLCBXcml0ZSB0
aGUgY29ycmVjdCBtX3R5cGUgdG8gdGhlIHJlZ2lzdGVyLgogfQogCkBAIC0xOTksOCArMTk5LDgg
QEAgQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdERlYnVnRXhjZXB0aQogCiBBTFdBWVNfSU5M
SU5FIHZvaWQgQ1RJOjplbWl0RGVidWdFeGNlcHRpb25DaGVjaygpCiB7Ci0gICAgZW1pdEdldENU
SVBhcmFtKENUSV9BUkdTX2V4ZWMsIE1hY3JvQXNzZW1ibGVyOjplY3gpOwotICAgIG1faml0LmNt
cGxfaTMybSgwLCBPQkpFQ1RfT0ZGU0VUKEV4ZWNTdGF0ZSwgbV9leGNlcHRpb24pLCBNYWNyb0Fz
c2VtYmxlcjo6ZWN4KTsKKyAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1NfZXhlYywgWDg2Ojpl
Y3gpOworICAgIG1faml0LmNtcGxfaTMybSgwLCBPQkpFQ1RfT0ZGU0VUKEV4ZWNTdGF0ZSwgbV9l
eGNlcHRpb24pLCBYODY6OmVjeCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub0V4Y2Vw
dGlvbiA9IG1faml0LmVtaXRVbmxpbmtlZEplKCk7CiAgICAgbV9qaXQuZW1pdEludDMoKTsKICAg
ICBtX2ppdC5saW5rKG5vRXhjZXB0aW9uLCBtX2ppdC5sYWJlbCgpKTsKQEAgLTMxMCw5ICszMTAs
OSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0SnVtcFNsb3dDYXNlCiAKIEFMV0FZU19J
TkxJTkUgdm9pZCBDVEk6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbXMoTWFjcm9Bc3NlbWJsZXI6
OlJlZ2lzdGVySUQgcmVnMSwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnMiwgdW5zaWdu
ZWQgb3Bjb2RlSW5kZXgpCiB7Ci0gICAgbV9qaXQubW92bF9ycihyZWcxLCBNYWNyb0Fzc2VtYmxl
cjo6ZWN4KTsKLSAgICBtX2ppdC5hbmRsX3JyKHJlZzIsIE1hY3JvQXNzZW1ibGVyOjplY3gpOwot
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBvcGNvZGVJ
bmRleCk7CisgICAgbV9qaXQubW92bF9ycihyZWcxLCBYODY6OmVjeCk7CisgICAgbV9qaXQuYW5k
bF9ycihyZWcyLCBYODY6OmVjeCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKFg4Njo6
ZWN4LCBvcGNvZGVJbmRleCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdW5zaWduZWQgQ1RJOjpnZXRE
ZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpTVmFsdWUqIGltbSkKQEAgLTM2Niw4ICszNjYsOCBA
QCBDVEk6OkNUSShNYWNoaW5lKiBtYWNoaW5lLCBFeGVjU3RhdGUqIGV4CiAKICNkZWZpbmUgQ1RJ
X0NPTVBJTEVfQklOQVJZX09QKG5hbWUpIFwKICAgICBjYXNlIG5hbWU6IHsgXAotICAgICAgICBl
bWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIE1hY3JvQXNzZW1i
bGVyOjplY3gpOyBcCi0gICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUu
b3BlcmFuZCwgNCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7IFwKKyAgICAgICAgZW1pdEdldFB1dEFy
ZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAwLCBYODY6OmVjeCk7IFwKKyAgICAgICAg
ZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCA0LCBYODY6OmVjeCk7
IFwKICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpXyMjbmFtZSk7IFwKICAgICAgICAg
ZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsgXAogICAgICAgICBp
ICs9IDQ7IFwKQEAgLTM5Myw0NiArMzkzLDQ2IEBAIHZvaWQgQ1RJOjpjb21waWxlT3BDYWxsKElu
c3RydWN0aW9uKiBpbnMKICAgICAgICAgaWYgKHRoaXNWYWwgPT0gbWlzc2luZ1RoaXNPYmplY3RN
YXJrZXIoKSkgewogICAgICAgICAgICAgZW1pdFB1dEFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQ+KG1fZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCkpLCA0KTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBlbWl0R2V0UHV0QXJnKHRoaXNWYWwsIDQsIE1hY3JvQXNzZW1ibGVy
OjplY3gpOworICAgICAgICAgICAgZW1pdEdldFB1dEFyZyh0aGlzVmFsLCA0LCBYODY6OmVjeCk7
CiAgICAgfQogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyB3YXNFdmFsOwogICAgIGlmICh0
eXBlID09IE9wQ2FsbEV2YWwpIHsKLSAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltp
ICsgMl0udS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgZW1pdEdl
dFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAwLCBYODY6OmVjeCk7CiAgICAg
ICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9jYWxsX2V2YWwpOwogICAgICAgICBtX2pp
dC5lbWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAKLSAgICAgICBlbWl0R2V0Q1RJUGFy
YW0oQ1RJX0FSR1NfciwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7IC8vIGVkaSA6PSByCisgICAgICAg
ZW1pdEdldENUSVBhcmFtKENUSV9BUkdTX3IsIFg4Njo6ZWRpKTsgLy8gZWRpIDo9IHIKIAotICAg
ICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oSlNJbW1lZGlh
dGU6OmltcG9zc2libGVWYWx1ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgIG1f
aml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihKU0ltbWVkaWF0ZTo6aW1w
b3NzaWJsZVZhbHVlKCkpLCBYODY6OmVheCk7CiAgICAgICAgIHdhc0V2YWwgPSBtX2ppdC5lbWl0
VW5saW5rZWRKbmUoKTsKICAgICAKICAgICAgICAgLy8gdGhpcyByZWxvYWRzIHRoZSBmaXJzdCBh
cmcgaW50byBlY3ggKGNoZWNrZWQganVzdCBiZWxvdykuCi0gICAgICAgIGVtaXRHZXRBcmcoaW5z
dHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAg
IGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgWDg2OjplY3gpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIHRoaXMgc2V0cyB1cCB0aGUgZmlyc3QgYXJnLCBhbmQgZXhw
bGljaXRseSBsZWF2ZXMgdGhlIHZhbHVlIGluIGVjeCAoY2hlY2tlZCBqdXN0IGJlbG93KS4KLSAg
ICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWN4KTsKLSAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWN4LCAwKTsK
KyAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBYODY6OmVj
eCk7CisgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplY3gsIDApOwogICAgIH0KIAogICAgIC8vIEZh
c3QgY2hlY2sgZm9yIEpTIGZ1bmN0aW9uLgotICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlh
dGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgIG1faml0LnRlc3RsX2kzMnIo
SlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWN4KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1w
U3JjIGlzTm90T2JqZWN0ID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgbV9qaXQuY21w
bF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9qc0Z1bmN0aW9u
VnB0ciksIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgIG1faml0LmNtcGxfaTMybShyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkPihtX21hY2hpbmUtPm1fanNGdW5jdGlvblZwdHIpLCBYODY6OmVj
eCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBpc0pTRnVuY3Rpb24gPSBtX2ppdC5lbWl0
VW5saW5rZWRKZSgpOwogICAgIG1faml0LmxpbmsoaXNOb3RPYmplY3QsIG1faml0LmxhYmVsKCkp
OwogCiAgICAgLy8gVGhpcyBoYW5kbGVzIGhvc3QgZnVuY3Rpb25zCiAgICAgZW1pdENhbGwoaSwg
KCh0eXBlID09IE9wQ29uc3RydWN0KSA/IE1hY2hpbmU6OmN0aV9vcF9jb25zdHJ1Y3RfTm90SlND
b25zdHJ1Y3QgOiBNYWNoaW5lOjpjdGlfb3BfY2FsbF9Ob3RKU0Z1bmN0aW9uKSk7Ci0gICAgZW1p
dEdldENUSVBhcmFtKENUSV9BUkdTX3IsIE1hY3JvQXNzZW1ibGVyOjplZGkpOyAvLyBlZGkgOj0g
cgorICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19yLCBYODY6OmVkaSk7IC8vIGVkaSA6PSBy
CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyB3YXNOb3RKU0Z1bmN0aW9uID0gbV9q
aXQuZW1pdFVubGlua2VkSm1wKCk7CiAgICAgbV9qaXQubGluayhpc0pTRnVuY3Rpb24sIG1faml0
LmxhYmVsKCkpOwogCiAgICAgLy8gVGhpcyBoYW5kbGVzIEpTRnVuY3Rpb25zCiAgICAgZW1pdENh
bGwoaSwgKCh0eXBlID09IE9wQ29uc3RydWN0KSA/IE1hY2hpbmU6OmN0aV9vcF9jb25zdHJ1Y3Rf
SlNDb25zdHJ1Y3QgOiBNYWNoaW5lOjpjdGlfb3BfY2FsbF9KU0Z1bmN0aW9uKSk7Ci0gICAgbV9q
aXQuY2FsbF9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgIGVtaXRHZXRDVElQYXJhbShDVElf
QVJHU19yLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsgLy8gZWRpIDo9IHIKKyAgICBtX2ppdC5jYWxs
X3IoWDg2OjplYXgpOworICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19yLCBYODY6OmVkaSk7
IC8vIGVkaSA6PSByCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wRHN0IGVuZCA9IG1faml0Lmxh
YmVsKCk7CiAgICAgbV9qaXQubGluayh3YXNOb3RKU0Z1bmN0aW9uLCBlbmQpOwpAQCAtNDQ0LDE0
ICs0NDQsMTQgQEAgdm9pZCBDVEk6OmNvbXBpbGVPcENhbGwoSW5zdHJ1Y3Rpb24qIGlucwogCiB2
b2lkIENUSTo6ZW1pdFNsb3dTY3JpcHRDaGVjayh1bnNpZ25lZCBvcGNvZGVJbmRleCkKIHsKLSAg
ICBtX2ppdC5zdWJsX2k4cigxLCBNYWNyb0Fzc2VtYmxlcjo6ZXNpKTsKKyAgICBtX2ppdC5zdWJs
X2k4cigxLCBYODY6OmVzaSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBza2lwVGltZW91
dCA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwogICAgIGVtaXRDYWxsKG9wY29kZUluZGV4LCBN
YWNoaW5lOjpjdGlfdGltZW91dF9jaGVjayk7CiAKLSAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FS
R1NfZXhlYywgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgbV9qaXQubW92bF9tcihPQkpFQ1Rf
T0ZGU0VUKEV4ZWNTdGF0ZSwgbV9nbG9iYWxEYXRhKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCwgTWFj
cm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTR2xv
YmFsRGF0YSwgbWFjaGluZSksIE1hY3JvQXNzZW1ibGVyOjplY3gsIE1hY3JvQXNzZW1ibGVyOjpl
Y3gpOwotICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChNYWNoaW5lLCBtX3RpY2tzVW50
aWxOZXh0VGltZW91dENoZWNrKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCwgTWFjcm9Bc3NlbWJsZXI6
OmVzaSk7CisgICAgZW1pdEdldENUSVBhcmFtKENUSV9BUkdTX2V4ZWMsIFg4Njo6ZWN4KTsKKyAg
ICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2dsb2JhbERhdGEpLCBY
ODY6OmVjeCwgWDg2OjplY3gpOworICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0ds
b2JhbERhdGEsIG1hY2hpbmUpLCBYODY6OmVjeCwgWDg2OjplY3gpOworICAgIG1faml0Lm1vdmxf
bXIoT0JKRUNUX09GRlNFVChNYWNoaW5lLCBtX3RpY2tzVW50aWxOZXh0VGltZW91dENoZWNrKSwg
WDg2OjplY3gsIFg4Njo6ZXNpKTsKICAgICBtX2ppdC5saW5rKHNraXBUaW1lb3V0LCBtX2ppdC5s
YWJlbCgpKTsKIH0KIApAQCAtNDczLDEwICs0NzMsMTAgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgdW5zaWdu
ZWQgc3JjID0gaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChz
cmMgPCBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKQotICAgICAgICAgICAg
ICAgIG1faml0Lm1vdmxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihtX2NvZGVCbG9j
ay0+Y29uc3RhbnRSZWdpc3RlcnNbc3JjXS5qc1ZhbHVlKG1fZXhlYykpLCBNYWNyb0Fzc2VtYmxl
cjo6ZWR4KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZsX2kzMnIocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzW3NyY10uanNWYWx1ZSht
X2V4ZWMpKSwgWDg2OjplZHgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGVt
aXRHZXRBcmcoc3JjLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIGVtaXRQdXRS
ZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7
CisgICAgICAgICAgICAgICAgZW1pdEdldEFyZyhzcmMsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAg
IGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgWDg2OjplZHgpOwog
ICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ4
NywyNyArNDg3LDI3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgICAgIGlmIChzcmMyIDwgbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzLnNpemUoKSkg
ewogICAgICAgICAgICAgICAgIEpTVmFsdWUqIHZhbHVlID0gbV9jb2RlQmxvY2stPmNvbnN0YW50
UmVnaXN0ZXJzW3NyYzJdLmpzVmFsdWUobV9leGVjKTsKICAgICAgICAgICAgICAgICBpZiAoSlNJ
bW1lZGlhdGU6OmlzTnVtYmVyKHZhbHVlKSkgewotICAgICAgICAgICAgICAgICAgICBlbWl0R2V0
QXJnKHNyYzEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1faml0LmFkZGxfaTMycihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKHZh
bHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRB
cmcoc3JjMSwgWDg2OjplYXgpOworICAgICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW0oWDg2OjplYXgsIGkpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5hZGRsX2kz
MnIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZSh2YWx1ZSksIFg4Njo6ZWF4KTsKICAgICAg
ICAgICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1p
dFVubGlua2VkSm8oKSwgaSkpOwogICAgICAgICAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGRz
dCk7CiAgICAgICAgICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmICghKHNyYzEgPCBt
X2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKSkgewotICAgICAgICAgICAgICAg
IGVtaXRHZXRBcmcoc3JjMSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICAgICAg
ZW1pdEdldEFyZyhzcmMyLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1zKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1i
bGVyOjplZHgsIGkpOwotICAgICAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0
ZShNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgICAgICBtX2ppdC5hZGRsX3JyKE1h
Y3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgICAg
IGVtaXRHZXRBcmcoc3JjMSwgWDg2OjplYXgpOworICAgICAgICAgICAgICAgIGVtaXRHZXRBcmco
c3JjMiwgWDg2OjplZHgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bXMoWDg2OjplYXgsIFg4Njo6ZWR4LCBpKTsKKyAgICAgICAgICAgICAgICBlbWl0RmFzdEFyaXRo
RGVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOworICAgICAgICAgICAgICAgIG1faml0LmFkZGxfcnIo
WDg2OjplZHgsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQo
U2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbygpLCBpKSk7CiAgICAgICAgICAgICAg
ICAgZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmco
aW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0g
ICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDQs
IE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVj
dGlvbltpICsgMl0udS5vcGVyYW5kLCAwLCBYODY6OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0
UHV0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDQsIFg4Njo6ZWN4KTsKICAgICAg
ICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9hZGQpOwogICAgICAgICAgICAgZW1p
dFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkg
Kz0gNDsKQEAgLTUxNiwxMSArNTE2LDExIEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgY2FzZSBvcF9lbmQ6IHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9j
ay0+bmVlZHNGdWxsU2NvcGVDaGFpbikKICAgICAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNo
aW5lOjpjdGlfb3BfZW5kKTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0
QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKICNpZiBFTkFCTEUo
U0FNUExJTkdfVE9PTCkKICAgICAgICAgICAgIG1faml0Lm1vdmxfaTMybSgtMSwgJndoYXQpOwog
I2VuZGlmCi0gICAgICAgICAgICBtX2ppdC5wdXNobF9tKC0oKG1fY29kZUJsb2NrLT5udW1Mb2Nh
bHMgKyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpIC0gUmVnaXN0ZXJGaWxlOjpD
VElSZXR1cm5FSVApICogc2l6ZW9mKFJlZ2lzdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7Cisg
ICAgICAgICAgICBtX2ppdC5wdXNobF9tKC0oKG1fY29kZUJsb2NrLT5udW1Mb2NhbHMgKyBSZWdp
c3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpIC0gUmVnaXN0ZXJGaWxlOjpDVElSZXR1cm5F
SVApICogc2l6ZW9mKFJlZ2lzdGVyKSwgWDg2OjplZGkpOwogICAgICAgICAgICAgbV9qaXQucmV0
KCk7CiAgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUzMywxMSAr
NTMzLDExIEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3ByZV9pbmM6IHsKICAgICAgICAgICAgIGludCBzcmNEc3QgPSBpbnN0
cnVjdGlvbltpICsgMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgZW1pdEdldEFyZyhzcmNEc3Qs
IE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tKE1hY3JvQXNzZW1ibGVyOjplYXgsIGkpOwotICAgICAgICAgICAgbV9qaXQuYWRkbF9pOHIo
Z2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBY
ODY6OmVheCk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2OjplYXgs
IGkpOworICAgICAgICAgICAgbV9qaXQuYWRkbF9pOHIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVk
aWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBYODY6OmVheCk7CiAgICAgICAgICAg
ICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbygp
LCBpKSk7Ci0gICAgICAgICAgICBlbWl0UHV0UmVzdWx0KHNyY0RzdCwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CisgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KHNyY0RzdCwgWDg2OjplYXgpOwogICAg
ICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU1NSwx
NiArNTU1LDE2IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBKU1ZhbHVlKiBzcmMyaW1tID0gZ2V0Q29uc3RhbnRJbW1lZGlhdGVOdW1lcmljQXJn
KGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKHNyYzJpbW0p
IHsKLSAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oc3JjMmltbSksIE1hY3JvQXNz
ZW1ibGVyOjplZHgpOworICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZCwgWDg2OjplZHgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbShYODY6OmVkeCwgaSk7CisgICAgICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJy
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHNyYzJpbW0pLCBYODY6OmVkeCk7CiAgICAgICAg
ICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUobV9qaXQuZW1pdFVubGlua2VkSmwo
KSwgaSArIDMgKyB0YXJnZXQpKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKLSAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51
Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBpKTsKLSAgICAgICAgICAgICAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuY21wbF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAx
XS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3Ry
dWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2OjplYXgsIGkpOworICAgICAgICAgICAgICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEltbShYODY6OmVkeCwgaSk7CisgICAgICAgICAgICAgICAgbV9qaXQu
Y21wbF9ycihYODY6OmVkeCwgWDg2OjplYXgpOwogICAgICAgICAgICAgICAgIG1fam1wVGFibGUu
YXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEpsKCksIGkgKyAzICsgdGFyZ2V0KSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC01NzksMTAgKzU3OSwxMCBA
QCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CiAgICAgICAgICAgICBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2st
PmlkZW50aWZpZXJzW2luc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmRdKTsKICAgICAgICAgICAg
IGVtaXRQdXRBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCksIDQp
OwotICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25b
aSArIDNdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBlbWl0
UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOyAvLyBsZWF2ZSB0aGUgYmFzZSBpbiBlYXgK
LSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgOCk7IC8vIGxlYXZl
IHRoZSBiYXNlIGluIGVkeAorICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsg
MV0udS5vcGVyYW5kLCBYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0
aW9uW2kgKyAzXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmco
WDg2OjplYXgsIDApOyAvLyBsZWF2ZSB0aGUgYmFzZSBpbiBlYXgKKyAgICAgICAgICAgIGVtaXRQ
dXRBcmcoWDg2OjplZHgsIDgpOyAvLyBsZWF2ZSB0aGUgYmFzZSBpbiBlZHgKICAgICAgICAgICAg
IGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9wdXRfYnlfaWQpOwogICAgICAgICAgICAgaSAr
PSA2OwogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTAsMjMgKzU5MCwyMyBAQCB2b2lkIENUSTo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAg
ICAgICAgICAgICBJZGVudGlmaWVyKiBpZGVudCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXJz
W2luc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmRdKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmdD
b25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCksIDQpOwotICAgICAgICAg
ICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVheCwgMCk7
IC8vIGxlYXZlIHRoZSBiYXNlIGluIGVheAorICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVj
dGlvbltpICsgMl0udS5vcGVyYW5kLCBYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0UHV0QXJn
KFg4Njo6ZWF4LCAwKTsgLy8gbGVhdmUgdGhlIGJhc2UgaW4gZWF4CiAgICAgICAgICAgICBlbWl0
Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkKTsKICAgICAgICAgICAgIGVtaXRQdXRS
ZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9IDg7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2luc3RhbmNl
b2Y6IHsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3Bl
cmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgICAgICAgICBlbWl0R2V0UHV0QXJn
KGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDQsIE1hY3JvQXNzZW1ibGVyOjplY3gpOwor
ICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAw
LCBYODY6OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAz
XS51Lm9wZXJhbmQsIDQsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hp
bmU6OmN0aV9vcF9pbnN0YW5jZW9mKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1
Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2RlbF9ieV9pZDogewotICAgICAg
ICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAwLCBNYWNy
b0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25b
aSArIDJdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAgICAgICAgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyc1tpbnN0cnVjdGlvbltpICsgM10udS5v
cGVyYW5kXSk7CiAgICAgICAgICAgICBlbWl0UHV0QXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZD4oaWRlbnQpLCA0KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6
OmN0aV9vcF9kZWxfYnlfaWQpOwpAQCAtNjMxLDE0ICs2MzEsMTQgQEAgdm9pZCBDVEk6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX2dldF9zY29wZWRfdmFyOiB7CiAg
ICAgICAgICAgICBpbnQgc2tpcCA9IGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQgKyBtX2Nv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbjsKIAotICAgICAgICAgICAgZW1pdEdldENUSVBh
cmFtKENUSV9BUkdTX3Njb3BlQ2hhaW4sIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAg
ICAgZW1pdEdldENUSVBhcmFtKENUSV9BUkdTX3Njb3BlQ2hhaW4sIFg4Njo6ZWF4KTsKICAgICAg
ICAgICAgIHdoaWxlIChza2lwLS0pCi0gICAgICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpF
Q1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1Rf
T0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBuZXh0KSwgWDg2OjplYXgsIFg4Njo6ZWF4KTsKIAotICAg
ICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmpl
Y3QpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAg
ICAgIG1faml0Lm1vdmxfbXIoSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfZCgpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0Lm1v
dmxfbXIoSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfRGF0YV9yZWdpc3RlcnMoKSwgTWFjcm9B
c3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZsX21yKChpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3Rlciks
IE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAg
bV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpLCBYODY6
OmVheCwgWDg2OjplYXgpOworICAgICAgICAgICAgbV9qaXQubW92bF9tcihKU1ZhcmlhYmxlT2Jq
ZWN0OjpvZmZzZXRPZl9kKCksIFg4Njo6ZWF4LCBYODY6OmVheCk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZsX21yKEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mX0RhdGFfcmVnaXN0ZXJzKCksIFg4
Njo6ZWF4LCBYODY6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKChpbnN0cnVjdGlv
bltpICsgMl0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3RlciksIFg4Njo6ZWF4LCBYODY6OmVh
eCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC02NDYsMzAg
KzY0NiwzMCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNh
c2Ugb3BfcHV0X3Njb3BlZF92YXI6IHsKICAgICAgICAgICAgIGludCBza2lwID0gaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZCArIG1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluOwog
Ci0gICAgICAgICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1Nfc2NvcGVDaGFpbiwgTWFjcm9B
c3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAz
XS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgZW1pdEdldENU
SVBhcmFtKENUSV9BUkdTX3Njb3BlQ2hhaW4sIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRH
ZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgWDg2OjplYXgpOwogICAgICAgICAg
ICAgd2hpbGUgKHNraXAtLSkKLSAgICAgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9P
RkZTRVQoU2NvcGVDaGFpbk5vZGUsIG5leHQpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fz
c2VtYmxlcjo6ZWR4KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZT
RVQoU2NvcGVDaGFpbk5vZGUsIG5leHQpLCBYODY6OmVkeCwgWDg2OjplZHgpOwogCi0gICAgICAg
ICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCks
IE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAg
bV9qaXQubW92bF9tcihKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZl9kKCksIE1hY3JvQXNzZW1i
bGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAgbV9qaXQubW92bF9t
cihKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZl9EYXRhX3JlZ2lzdGVycygpLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmxf
cm0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpICog
c2l6ZW9mKFJlZ2lzdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CisgICAgICAgICAgICBtX2pp
dC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoU2NvcGVDaGFpbk5vZGUsIG9iamVjdCksIFg4Njo6ZWR4
LCBYODY6OmVkeCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKEpTVmFyaWFibGVPYmplY3Q6
Om9mZnNldE9mX2QoKSwgWDg2OjplZHgsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmxfbXIoSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfRGF0YV9yZWdpc3RlcnMoKSwgWDg2Ojpl
ZHgsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfcm0oWDg2OjplYXgsIChpbnN0
cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3RlciksIFg4Njo6ZWR4KTsK
ICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcmV0OiB7Ci0gICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9u
W2kgKyAxXS51Lm9wZXJhbmQsIDAsIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgICAgICAgICAg
ZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCAwLCBYODY6OmVjeCk7
CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfcmV0KTsKIAotICAgICAg
ICAgICAgbV9qaXQucHVzaGxfbSgtKChtX2NvZGVCbG9jay0+bnVtTG9jYWxzICsgUmVnaXN0ZXJG
aWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIFJlZ2lzdGVyRmlsZTo6Q1RJUmV0dXJuRUlQKSAq
IHNpemVvZihSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjplZGkpOworICAgICAgICAgICAgbV9q
aXQucHVzaGxfbSgtKChtX2NvZGVCbG9jay0+bnVtTG9jYWxzICsgUmVnaXN0ZXJGaWxlOjpDYWxs
RnJhbWVIZWFkZXJTaXplKSAtIFJlZ2lzdGVyRmlsZTo6Q1RJUmV0dXJuRUlQKSAqIHNpemVvZihS
ZWdpc3RlciksIFg4Njo6ZWRpKTsKICAgICAgICAgICAgIG1faml0LnJldCgpOwogICAgICAgICAg
ICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9uZXdfYXJyYXk6IHsKLSAgICAgICAgICAgIG1faml0LmxlYWxfbXIoc2l6ZW9mKFJlZ2lzdGVy
KSAqIGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplZGksIE1h
Y3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxl
cjo6ZWR4LCAwKTsKKyAgICAgICAgICAgIG1faml0LmxlYWxfbXIoc2l6ZW9mKFJlZ2lzdGVyKSAq
IGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWRpLCBYODY6OmVkeCk7CisgICAg
ICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCAwKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmdD
b25zdGFudChpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCA0KTsKICAgICAgICAgICAgIGVt
aXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9uZXdfYXJyYXkpOwogICAgICAgICAgICAgZW1pdFB1
dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKQEAgLTY5MCwxOSArNjkwLDE5
IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDogewotICAgICAgICAgICAg
ZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4KTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFu
ZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICBlbWl0RmFzdEFyaXRo
SW1tVG9JbnQoTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBtX2ppdC50ZXN0bF9p
MzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAg
ICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgWDg2OjplYXgpOwor
ICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBYODY6
OmVkeCk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2OjplZHgsIGkp
OworICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWR4KTsKKyAgICAgICAg
ICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWF4KTsKICAg
ICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxp
bmtlZEpuZSgpLCBpKSk7Ci0gICAgICAgICAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZD4obV9tYWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgWDg2OjplYXgpOwogICAgICAgICAgICAg
bV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSm5lKCks
IGkpKTsKLSAgICAgICAgICAgIG1faml0LmNtcGxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgT0JK
RUNUX09GRlNFVChKU0FycmF5LCBtX2Zhc3RBY2Nlc3NDdXRvZmYpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfcm0oWDg2OjplZHgsIE9CSkVDVF9PRkZTRVQo
SlNBcnJheSwgbV9mYXN0QWNjZXNzQ3V0b2ZmKSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9z
bG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSmJlKCksIGkp
KTsKIAotICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1f
c3RvcmFnZSksIE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAg
ICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV92ZWN0
b3JbMF0pLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBzaXplb2Yo
SlNWYWx1ZSopLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxf
bXIoT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX3N0b3JhZ2UpLCBYODY6OmVheCwgWDg2OjplYXgp
OworICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwg
bV92ZWN0b3JbMF0pLCBYODY6OmVheCwgWDg2OjplZHgsIHNpemVvZihKU1ZhbHVlKiksIFg4Njo6
ZWF4KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcxMiwz
NyArNzEyLDM3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
ICAgIGVtaXRQdXRBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihpZGVudCks
IDApOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3Jlc29sdmVfZnVu
Yyk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQpOwotICAgICAgICAgICAgZW1pdEdldENUSVBhcmFtKENUSV9BUkdTXzJuZFJlc3VsdCwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1Nf
Mm5kUmVzdWx0LCBYODY6OmVheCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0
aW9uW2kgKyAyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zdWI6IHsKLSAgICAgICAgICAgIGVt
aXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVh
eCk7Ci0gICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQs
IE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tcyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKLSAgICAg
ICAgICAgIG1faml0LnN1YmxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJh
bmQsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNd
LnUub3BlcmFuZCwgWDg2OjplZHgpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tcyhYODY6OmVheCwgWDg2OjplZHgsIGkpOworICAgICAgICAgICAgbV9qaXQuc3VibF9ycihY
ODY6OmVkeCwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dD
YXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSm8oKSwgaSkpOwotICAgICAgICAgICAgZW1pdEZh
c3RBcml0aFJlVGFnSW1tZWRpYXRlKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAg
ZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQ
dXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9
IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9i
eV92YWw6IHsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3Bl
cmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICBlbWl0R2V0QXJnKGluc3Ry
dWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgICAgICAg
ICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxl
cjo6ZWN4KTsKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2Vt
Ymxlcjo6ZWR4LCBpKTsKLSAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChNYWNyb0Fz
c2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6
OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgZW1pdEdldEFyZyhp
bnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0
R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKKyAgICAgICAg
ICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgWDg2OjplY3gpOwor
ICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKFg4Njo6ZWR4LCBpKTsKKyAgICAg
ICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChYODY6OmVkeCk7CisgICAgICAgICAgICBtX2pp
dC50ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBYODY6OmVheCk7CiAgICAgICAgICAg
ICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbmUo
KSwgaSkpOwotICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQ+KG1fbWFjaGluZS0+bV9qc0FycmF5VnB0ciksIE1hY3JvQXNzZW1ibGVyOjplYXgpOwor
ICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1f
bWFjaGluZS0+bV9qc0FycmF5VnB0ciksIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nh
c2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpKSk7Ci0g
ICAgICAgICAgICBtX2ppdC5jbXBsX3JtKE1hY3JvQXNzZW1ibGVyOjplZHgsIE9CSkVDVF9PRkZT
RVQoSlNBcnJheSwgbV9mYXN0QWNjZXNzQ3V0b2ZmKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Cisg
ICAgICAgICAgICBtX2ppdC5jbXBsX3JtKFg4Njo6ZWR4LCBPQkpFQ1RfT0ZGU0VUKEpTQXJyYXks
IG1fZmFzdEFjY2Vzc0N1dG9mZiksIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2Vz
LmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpiZSgpLCBpKSk7CiAKLSAg
ICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX3N0b3JhZ2Up
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAg
IG1faml0Lm1vdmxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVjeCwgT0JKRUNUX09GRlNFVChBcnJheVN0
b3JhZ2UsIG1fdmVjdG9yWzBdKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6
OmVkeCwgc2l6ZW9mKEpTVmFsdWUqKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVD
VF9PRkZTRVQoSlNBcnJheSwgbV9zdG9yYWdlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAgICAg
ICAgICAgIG1faml0Lm1vdmxfcm0oWDg2OjplY3gsIE9CSkVDVF9PRkZTRVQoQXJyYXlTdG9yYWdl
LCBtX3ZlY3RvclswXSksIFg4Njo6ZWF4LCBYODY6OmVkeCwgc2l6ZW9mKEpTVmFsdWUqKSk7CiAg
ICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzUx
LDE2ICs3NTEsMTYgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICAgICAgZW1pdFNsb3dTY3JpcHRDaGVjayhpKTsKIAogICAgICAgICAgICAgdW5zaWduZWQgdGFy
Z2V0ID0gaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGVtaXRHZXRB
cmcoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Cisg
ICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIFg4Njo6
ZWF4KTsKIAotICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KEpTSW1tZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVpbnQzMl90
PihKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSwgWDg2OjplYXgpOwogICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBpc1plcm8gPSBtX2ppdC5lbWl0VW5saW5rZWRKZSgpOwot
ICAgICAgICAgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVn
ZXIsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQudGVzdGxfaTMycihK
U0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIG1f
am1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpICsgMiAr
IHRhcmdldCkpOwogCi0gICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBYODY6OmVheCk7CiAgICAgICAg
ICAgICBtX2ptcFRhYmxlLmFwcGVuZChKbXBUYWJsZShtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBp
ICsgMiArIHRhcmdldCkpOwotICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkpLCBYODY6OmVheCk7CiAg
ICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5s
aW5rZWRKbmUoKSwgaSkpOwogCiAgICAgICAgICAgICBtX2ppdC5saW5rKGlzWmVybywgbV9qaXQu
bGFiZWwoKSk7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9u
ZWdhdGU6IHsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUu
b3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0UHV0
QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIFg4Njo6ZWN4KTsKICAgICAgICAg
ICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9uZWdhdGUpOwogICAgICAgICAgICAgZW1p
dFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkg
Kz0gMzsKQEAgLTc5NCwxMSArNzk0LDExIEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgQ1RJX0NPTVBJTEVfQklOQVJZX09QKG9wX2RpdikKICAgICAgICAgY2Fz
ZSBvcF9wcmVfZGVjOiB7CiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBpKTsKLSAgICAgICAgICAgIG1faml0LnN1YmxfaThyKGdldERlVGFnZ2Vk
Q29uc3RhbnRJbW1lZGlhdGUoSlNJbW1lZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKHNyY0RzdCwgWDg2OjplYXgpOwor
ICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKFg4Njo6ZWF4LCBpKTsKKyAgICAg
ICAgICAgIG1faml0LnN1YmxfaThyKGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUoSlNJbW1l
ZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2Fz
ZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSm8oKSwgaSkpOwotICAg
ICAgICAgICAgZW1pdFB1dFJlc3VsdChzcmNEc3QsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAg
ICAgICAgICAgZW1pdFB1dFJlc3VsdChzcmNEc3QsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGkg
Kz0gMjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MDYsNDMgKzgwNiw0MyBA
QCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICB1bnNpZ25l
ZCB0YXJnZXQgPSBpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kOwogICAgICAgICAgICAgSlNW
YWx1ZSogc3JjMmltbSA9IGdldENvbnN0YW50SW1tZWRpYXRlTnVtZXJpY0FyZyhpbnN0cnVjdGlv
bltpICsgMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGlmIChzcmMyaW1tKSB7Ci0gICAgICAg
ICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fz
c2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0o
TWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJy
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHNyYzJpbW0pLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4
KTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQsIFg4Njo6ZWR4KTsKKyAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0o
WDg2OjplZHgsIGkpOworICAgICAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkPihzcmMyaW1tKSwgWDg2OjplZHgpOwogICAgICAgICAgICAgICAgIG1f
am1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEpnZSgpLCBpICsgMyAr
IHRhcmdldCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0R2V0
QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwot
ICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwg
TWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tKE1hY3JvQXNzZW1ibGVyOjplYXgsIGkpOwotICAgICAgICAgICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKLSAgICAgICAgICAgICAg
ICBtX2ppdC5jbXBsX3JyKE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgp
OworICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFu
ZCwgWDg2OjplYXgpOworICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSAr
IDJdLnUub3BlcmFuZCwgWDg2OjplZHgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbShYODY6OmVheCwgaSk7CisgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tKFg4Njo6ZWR4LCBpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jbXBsX3JyKFg4
Njo6ZWR4LCBYODY6OmVheCk7CiAgICAgICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1w
VGFibGUobV9qaXQuZW1pdFVubGlua2VkSmdlKCksIGkgKyAzICsgdGFyZ2V0KSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX25vdDogewotICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVj
dGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAg
IG1faml0LnhvcmxfaThyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wsIE1hY3JvQXNzZW1i
bGVyOjplYXgpOwotICAgICAgICAgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6RnVs
bFRhZ1R5cGVNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsgLy8gaTg/CisgICAgICAgICAgICBl
bWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKKyAgICAg
ICAgICAgIG1faml0LnhvcmxfaThyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wsIFg4Njo6
ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdU
eXBlTWFzaywgWDg2OjplYXgpOyAvLyBpOD8KICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVu
ZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpKSk7Ci0gICAgICAgICAg
ICBtX2ppdC54b3JsX2k4cigoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlQm9vbCB8IEpTSW1tZWRp
YXRlOjpFeHRlbmRlZFBheWxvYWRCaXRCb29sVmFsdWUpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
KyAgICAgICAgICAgIG1faml0LnhvcmxfaThyKChKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29s
IHwgSlNJbW1lZGlhdGU6OkV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSksIFg4Njo6ZWF4KTsK
ICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2pmYWxzZTogewogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gaW5z
dHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1
Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAg
ICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKIAot
ICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpT
SW1tZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAg
ICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihKU0ltbWVk
aWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9qbXBUYWJs
ZS5hcHBlbmQoSm1wVGFibGUobV9qaXQuZW1pdFVubGlua2VkSmUoKSwgaSArIDIgKyB0YXJnZXQp
KTsKLSAgICAgICAgICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJ
bnRlZ2VyLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX2kz
MnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCBYODY6OmVheCk7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGlzTm9uWmVybyA9IG1faml0LmVtaXRVbmxpbmtlZEpu
ZSgpOwogCi0gICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdD4oSlNJbW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVpbnQzMl90
PihKU0ltbWVkaWF0ZTo6ZmFsc2VJbW1lZGlhdGUoKSksIFg4Njo6ZWF4KTsKICAgICAgICAgICAg
IG1fam1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEplKCksIGkgKyAy
ICsgdGFyZ2V0KSk7Ci0gICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBYODY6OmVheCk7CiAgICAgICAg
ICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRK
bmUoKSwgaSkpOwogCiAgICAgICAgICAgICBtX2ppdC5saW5rKGlzTm9uWmVybywgbV9qaXQubGFi
ZWwoKSk7CkBAIC04NTEsMTkgKzg1MSwxOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIH07CiAgICAgICAgIGNhc2Ugb3BfcG9zdF9pbmM6IHsKICAgICAgICAg
ICAgIGludCBzcmNEc3QgPSBpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kOwotICAgICAgICAg
ICAgZW1pdEdldEFyZyhzcmNEc3QsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAg
bV9qaXQubW92bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsK
LSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWF4
LCBpKTsKLSAgICAgICAgICAgIG1faml0LmFkZGxfaThyKGdldERlVGFnZ2VkQ29uc3RhbnRJbW1l
ZGlhdGUoSlNJbW1lZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7
CisgICAgICAgICAgICBlbWl0R2V0QXJnKHNyY0RzdCwgWDg2OjplYXgpOworICAgICAgICAgICAg
bV9qaXQubW92bF9ycihYODY6OmVheCwgWDg2OjplZHgpOworICAgICAgICAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW1tKFg4Njo6ZWF4LCBpKTsKKyAgICAgICAgICAgIG1faml0LmFkZGxfaThy
KGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUoSlNJbW1lZGlhdGU6Om9uZUltbWVkaWF0ZSgp
KSwgWDg2OjplZHgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50
cnkobV9qaXQuZW1pdFVubGlua2VkSm8oKSwgaSkpOwotICAgICAgICAgICAgZW1pdFB1dFJlc3Vs
dChzcmNEc3QsIE1hY3JvQXNzZW1ibGVyOjplZHgpOworICAgICAgICAgICAgZW1pdFB1dFJlc3Vs
dChzcmNEc3QsIFg4Njo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3VuZXhwZWN0ZWRfbG9hZDogewogICAg
ICAgICAgICAgSlNWYWx1ZSogdiA9IG1fY29kZUJsb2NrLT51bmV4cGVjdGVkQ29uc3RhbnRzW2lu
c3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgbV9qaXQubW92bF9pMzJy
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHYpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPih2KSwg
WDg2OjplYXgpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gMzsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
ODcxLDcgKzg3MSw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgY2FzZSBvcF9qc3I6IHsKICAgICAgICAgICAgIGludCByZXRBZGRyRHN0ID0gaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCB0YXJnZXQgPSBpbnN0cnVjdGlv
bltpICsgMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgbV9qaXQubW92bF9pMzJtKDAsIHNpemVv
ZihSZWdpc3RlcikgKiByZXRBZGRyRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmxfaTMybSgwLCBzaXplb2YoUmVnaXN0ZXIpICogcmV0QWRkckRzdCwgWDg2
OjplZGkpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcERzdCBhZGRyUG9zaXRpb24g
PSBtX2ppdC5sYWJlbCgpOwogICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUo
bV9qaXQuZW1pdFVubGlua2VkSm1wKCksIGkgKyAyICsgdGFyZ2V0KSk7CiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Sm1wRHN0IHNyZXRUYXJnZXQgPSBtX2ppdC5sYWJlbCgpOwpAQCAtODgw
LDIwICs4ODAsMjAgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zcmV0OiB7Ci0gICAgICAg
ICAgICBtX2ppdC5qbXBfbShzaXplb2YoUmVnaXN0ZXIpICogaW5zdHJ1Y3Rpb25baSArIDFdLnUu
b3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7CisgICAgICAgICAgICBtX2ppdC5qbXBfbShz
aXplb2YoUmVnaXN0ZXIpICogaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgWDg2OjplZGkp
OwogICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgQ1RJX0NPTVBJTEVfQklOQVJZX09QKG9wX2VxKQogICAgICAgICBjYXNlIG9wX2xzaGlm
dDogewotICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5k
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDNdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgICAgICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVjeCwgaSk7Ci0g
ICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0g
ICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0g
ICAgICAgICAgICBtX2ppdC5zaGxsX0NMcihNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAg
ICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU9yU2xvd0Nhc2UoTWFjcm9Bc3NlbWJsZXI6OmVheCwg
aSk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQs
IFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUu
b3BlcmFuZCwgWDg2OjplY3gpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1t
KFg4Njo6ZWF4LCBpKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShYODY6
OmVjeCwgaSk7CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoWDg2OjplYXgpOwor
ICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KFg4Njo6ZWN4KTsKKyAgICAgICAgICAg
IG1faml0LnNobGxfQ0xyKFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRU
b0ltbU9yU2xvd0Nhc2UoWDg2OjplYXgsIGkpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChp
bnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtOTAzLDQxICs5MDMsNDEgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICAgICAgdW5zaWduZWQgc3JjMiA9IGluc3RydWN0aW9uW2kg
KyAzXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBkc3QgPSBpbnN0cnVjdGlvbltp
ICsgMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKEpTVmFsdWUqIHZhbHVlID0gZ2V0Q29u
c3RhbnRJbW1lZGlhdGVOdW1lcmljQXJnKHNyYzEpKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEdl
dEFyZyhzcmMyLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQuYW5kbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKSwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7IC8vIEZJWE1FOiBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGlzIGlz
IHJlbHlpbmcgb24gdGhlIGZvcm1hdCBvZiBKU0ltbWVkaWF0ZQorICAgICAgICAgICAgICAgIGVt
aXRHZXRBcmcoc3JjMiwgWDg2OjplYXgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbShYODY6OmVheCwgaSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9pMzJy
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKSwgWDg2OjplYXgpOyAvLyBGSVhNRTog
bWFrZSBpdCBtb3JlIG9idmlvdXMgdGhpcyBpcyByZWx5aW5nIG9uIHRoZSBmb3JtYXQgb2YgSlNJ
bW1lZGlhdGUKICAgICAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGRzdCk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKEpTVmFsdWUqIHZhbHVlID0gZ2V0Q29uc3RhbnRJbW1lZGlhdGVOdW1lcmlj
QXJnKHNyYzIpKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEdldEFyZyhzcmMxLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKLSAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFj
cm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9pMzJyKHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Cisg
ICAgICAgICAgICAgICAgZW1pdEdldEFyZyhzcmMxLCBYODY6OmVheCk7CisgICAgICAgICAgICAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKFg4Njo6ZWF4LCBpKTsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5hbmRsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4odmFsdWUpLCBYODY6
OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKHNyYzEsIE1hY3JvQXNzZW1ibGVy
OjplYXgpOwotICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjMiwgTWFjcm9Bc3NlbWJsZXI6
OmVkeCk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7CisgICAgICAgICAgICAgICAgZW1pdEdl
dEFyZyhzcmMxLCBYODY6OmVheCk7CisgICAgICAgICAgICAgICAgZW1pdEdldEFyZyhzcmMyLCBY
ODY6OmVkeCk7CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9ycihYODY6OmVkeCwgWDg2Ojpl
YXgpOworICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShYODY6OmVheCwg
aSk7CiAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9yc2hpZnQ6IHsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25b
aSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICBlbWl0
R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplY3gp
OwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1hY3JvQXNzZW1ibGVyOjpl
YXgsIGkpOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1hY3JvQXNzZW1i
bGVyOjplY3gsIGkpOwotICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50KE1hY3JvQXNz
ZW1ibGVyOjplY3gpOwotICAgICAgICAgICAgbV9qaXQuc2FybF9DTHIoTWFjcm9Bc3NlbWJsZXI6
OmVheCk7Ci0gICAgICAgICAgICBlbWl0RmFzdEFyaXRoUG90ZW50aWFsbHlSZVRhZ0ltbWVkaWF0
ZShNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZCwgWDg2OjplYXgpOworICAgICAgICAgICAgZW1pdEdldEFyZyhp
bnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBYODY6OmVjeCk7CisgICAgICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2OjplYXgsIGkpOworICAgICAgICAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW1tKFg4Njo6ZWN4LCBpKTsKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJ
bW1Ub0ludChYODY6OmVjeCk7CisgICAgICAgICAgICBtX2ppdC5zYXJsX0NMcihYODY6OmVheCk7
CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoUG90ZW50aWFsbHlSZVRhZ0ltbWVkaWF0ZShYODY6
OmVheCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9iaXRub3Q6IHsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5z
dHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0g
ICAgICAgICAgICBtX2ppdC54b3JsX2k4cih+SlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2Vy
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZCwgWDg2OjplYXgpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tKFg4Njo6ZWF4LCBpKTsKKyAgICAgICAgICAgIG1faml0LnhvcmxfaThyKH5K
U0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGVt
aXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBp
ICs9IDM7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk0Nyw3ICs5NDcsNyBAQCB2b2lkIENUSTo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBlbWl0UHV0QXJnQ29uc3RhbnQo
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oaWRlbnQpLCAwKTsKICAgICAgICAgICAgIGVtaXRD
YWxsKGksIE1hY2hpbmU6OmN0aV9vcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAgICAgICAgICAgICBl
bWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAg
ZW1pdEdldENUSVBhcmFtKENUSV9BUkdTXzJuZFJlc3VsdCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7
CisgICAgICAgICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1NfMm5kUmVzdWx0LCBYODY6OmVh
eCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC05NjEsMzMg
Kzk2MSwzMyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX21vZDogewotICAgICAgICAgICAg
ZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4KTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFu
ZCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVjeCwgaSk7Ci0gICAgICAgICAgICBlbWl0RmFz
dEFyaXRoRGVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICBl
bWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAg
ICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsK
KyAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgWDg2
OjplY3gpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKFg4Njo6ZWF4LCBp
KTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShYODY6OmVjeCwgaSk7Cisg
ICAgICAgICAgICBlbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUoWDg2OjplYXgpOworICAgICAg
ICAgICAgZW1pdEZhc3RBcml0aERlVGFnSW1tZWRpYXRlKFg4Njo6ZWN4KTsKICAgICAgICAgICAg
IG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEplKCks
IGkpKTsgLy8gVGhpcyBpcyBjaGVja2luZyBpZiB0aGUgbGFzdCBkZXRhZyByZXN1bHRlZCBpbiBh
IHZhbHVlIDAuCiAgICAgICAgICAgICBtX2ppdC5jZHEoKTsKLSAgICAgICAgICAgIG1faml0Lmlk
aXZsX3IoTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgICAgICAgICBlbWl0RmFzdEFyaXRoUmVU
YWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zs
X3JyKE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAg
ICAgbV9qaXQuaWRpdmxfcihYODY6OmVjeCk7CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoUmVU
YWdJbW1lZGlhdGUoWDg2OjplZHgpOworICAgICAgICAgICAgbV9qaXQubW92bF9ycihYODY6OmVk
eCwgWDg2OjplYXgpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsg
MV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKICAgICAgICAgICAgIHVuc2lnbmVk
IHRhcmdldCA9IGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBlbWl0
R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplYXgp
OworICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBY
ODY6OmVheCk7CiAKLSAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0
PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdD4oSlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSksIFg4Njo6ZWF4KTsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgaXNaZXJvID0gbV9qaXQuZW1pdFVubGlua2VkSmUo
KTsKLSAgICAgICAgICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJ
bnRlZ2VyLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX2kz
MnIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCBYODY6OmVheCk7CiAgICAgICAgICAg
ICBtX2ptcFRhYmxlLmFwcGVuZChKbXBUYWJsZShtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSwgaSAr
IDIgKyB0YXJnZXQpKTsKIAotICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0
PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6dHJ1ZUltbWVkaWF0ZSgpKSwgWDg2OjplYXgpOwogICAg
ICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUobV9qaXQuZW1pdFVubGlua2VkSmUo
KSwgaSArIDIgKyB0YXJnZXQpKTsKLSAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6ZmFsc2VJbW1lZGlhdGUoKSksIE1hY3Jv
QXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpKSwgWDg2OjplYXgp
OwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1p
dFVubGlua2VkSm5lKCksIGkpKTsKIAogICAgICAgICAgICAgbV9qaXQubGluayhpc1plcm8sIG1f
aml0LmxhYmVsKCkpOwpAQCAtOTk4LDIzICs5OTgsMjMgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBDVElfQ09NUElMRV9CSU5BUllfT1Aob3BfbmVxKQogICAg
ICAgICBjYXNlIG9wX3Bvc3RfZGVjOiB7CiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gaW5zdHJ1
Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmxfcnIoTWFjcm9Bc3Nl
bWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0gICAgICAgICAgICBtX2pp
dC5zdWJsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpTSW1tZWRpYXRlOjpvbmVJ
bW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjplZHgpOworICAgICAgICAgICAgZW1pdEdldEFy
ZyhzcmNEc3QsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfcnIoWDg2OjplYXgs
IFg4Njo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShYODY6OmVh
eCwgaSk7CisgICAgICAgICAgICBtX2ppdC5zdWJsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1t
ZWRpYXRlKEpTSW1tZWRpYXRlOjpvbmVJbW1lZGlhdGUoKSksIFg4Njo6ZWR4KTsKICAgICAgICAg
ICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpv
KCksIGkpKTsKLSAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoc3JjRHN0LCBNYWNyb0Fzc2VtYmxl
cjo6ZWR4KTsKKyAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoc3JjRHN0LCBYODY6OmVkeCk7CiAg
ICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgQ1RJX0NPTVBJTEVfQklOQVJZX09QKG9wX3Vyc2hpZnQpCiAgICAgICAgIGNhc2Ugb3BfYml0
eG9yOiB7Ci0gICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJh
bmQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVj
dGlvbltpICsgM10udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbXMoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICBtX2ppdC54b3JsX3JyKE1hY3JvQXNzZW1ibGVy
OjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgZW1pdEZhc3RBcml0aFJl
VGFnSW1tZWRpYXRlKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgZW1pdEdldEFy
ZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBYODY6OmVheCk7CisgICAgICAgICAgICBl
bWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKKyAgICAg
ICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbXMoWDg2OjplYXgsIFg4Njo6ZWR4LCBpKTsK
KyAgICAgICAgICAgIG1faml0LnhvcmxfcnIoWDg2OjplZHgsIFg4Njo6ZWF4KTsKKyAgICAgICAg
ICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7CiAgICAgICAgICAgICBl
bWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
aSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDI4LDEwICsxMDI4LDEwIEBAIHZvaWQg
Q1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfYml0b3I6IHsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5z
dHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAg
ICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1i
bGVyOjplZHgpOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tcyhNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKLSAgICAgICAgICAgIG1faml0
Lm9ybF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAg
ICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgWDg2OjplYXgp
OworICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBY
ODY6OmVkeCk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1zKFg4Njo6ZWF4
LCBYODY6OmVkeCwgaSk7CisgICAgICAgICAgICBtX2ppdC5vcmxfcnIoWDg2OjplZHgsIFg4Njo6
ZWF4KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNDIs
MjcgKzEwNDIsMjcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90aHJvdzogewotICAgICAg
ICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCAwLCBNYWNy
b0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25b
aSArIDFdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwg
TWFjaGluZTo6Y3RpX29wX3Rocm93KTsKLSAgICAgICAgICAgIG1faml0LmFkZGxfaThyKDB4MjQs
IE1hY3JvQXNzZW1ibGVyOjplc3ApOwotICAgICAgICAgICAgbV9qaXQucG9wbF9yKE1hY3JvQXNz
ZW1ibGVyOjplZGkpOwotICAgICAgICAgICAgbV9qaXQucG9wbF9yKE1hY3JvQXNzZW1ibGVyOjpl
c2kpOworICAgICAgICAgICAgbV9qaXQuYWRkbF9pOHIoMHgyNCwgWDg2Ojplc3ApOworICAgICAg
ICAgICAgbV9qaXQucG9wbF9yKFg4Njo6ZWRpKTsKKyAgICAgICAgICAgIG1faml0LnBvcGxfcihY
ODY6OmVzaSk7CiAgICAgICAgICAgICBtX2ppdC5yZXQoKTsKICAgICAgICAgICAgIGkgKz0gMjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X3BuYW1l
czogewotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVy
YW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmco
aW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAgICAgICAg
ZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX2dldF9wbmFtZXMpOwogICAgICAgICAgICAgZW1p
dFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkg
Kz0gMzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV4
dF9wbmFtZTogewotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0u
dS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQ
dXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAg
ICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9uZXh0X3BuYW1lKTsKLSAgICAg
ICAgICAgIG1faml0LnRlc3RsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgICAgICAgICAgbV9qaXQudGVzdGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZW5kT2ZJdGVyID0gbV9qaXQuZW1p
dFVubGlua2VkSmUoKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBtX2ptcFRhYmxlLmFwcGVuZChKbXBUYWJsZSht
X2ppdC5lbWl0VW5saW5rZWRKbXAoKSwgaSArIDMgKyB0YXJnZXQpKTsKQEAgLTEwNzEsNyArMTA3
MSw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHVzaF9zY29wZTogewotICAgICAgICAg
ICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCAwLCBNYWNyb0Fz
c2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFj
aGluZTo6Y3RpX29wX3B1c2hfc2NvcGUpOwogICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3R5cGVvZjogewotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0u
dS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQ
dXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAg
ICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3R5cGVvZik7CiAgICAgICAgICAgICBl
bWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
aSArPSAzOwpAQCAtMTA5MSwxNSArMTA5MSwxNSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIENUSV9DT01QSUxFX0JJTkFSWV9PUChvcF9zdHJpY3RlcSkKICAg
ICAgICAgQ1RJX0NPTVBJTEVfQklOQVJZX09QKG9wX25zdHJpY3RlcSkKICAgICAgICAgY2FzZSBv
cF90b19qc251bWJlcjogewotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltp
ICsgMl0udS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVt
aXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwog
ICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3RvX2pzbnVtYmVyKTsKICAg
ICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2luOiB7Ci0gICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kg
KyAyXS51Lm9wZXJhbmQsIDAsIE1hY3JvQXNzZW1ibGVyOjplY3gpOwotICAgICAgICAgICAgZW1p
dEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCA0LCBNYWNyb0Fzc2VtYmxl
cjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUu
b3BlcmFuZCwgMCwgWDg2OjplY3gpOworICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVj
dGlvbltpICsgM10udS5vcGVyYW5kLCA0LCBYODY6OmVjeCk7CiAgICAgICAgICAgICBlbWl0Q2Fs
bChpLCBNYWNoaW5lOjpjdGlfb3BfaW4pOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0
cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKQEAgLTExMDgs
MTcgKzExMDgsMTcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBjYXNlIG9wX3B1c2hfbmV3X3Njb3BlOiB7CiAgICAgICAgICAgICBJZGVudGlmaWVyKiBpZGVu
dCA9ICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXJzW2luc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJh
bmRdKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmdDb25zdGFudChyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkPihpZGVudCksIDApOwotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlv
bltpICsgM10udS5vcGVyYW5kLCA0LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAg
IGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgNCwgWDg2OjplY3gp
OwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3B1c2hfbmV3X3Njb3Bl
KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2NhdGNoOiB7Ci0gICAgICAgICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJ
X0FSR1NfciwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7IC8vIGVkaSA6PSByCi0gICAgICAgICAgICBl
bWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1NfZXhlYywgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2V4Y2VwdGlv
biksIE1hY3JvQXNzZW1ibGVyOjplY3gsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAg
ICAgbV9qaXQubW92bF9pMzJtKDAsIE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2V4Y2VwdGlv
biksIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgICAgICAgICAgZW1pdEdldENUSVBhcmFtKENU
SV9BUkdTX3IsIFg4Njo6ZWRpKTsgLy8gZWRpIDo9IHIKKyAgICAgICAgICAgIGVtaXRHZXRDVElQ
YXJhbShDVElfQVJHU19leGVjLCBYODY6OmVjeCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21y
KE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2V4Y2VwdGlvbiksIFg4Njo6ZWN4LCBYODY6OmVh
eCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX2kzMm0oMCwgT0JKRUNUX09GRlNFVChFeGVjU3Rh
dGUsIG1fZXhjZXB0aW9uKSwgWDg2OjplY3gpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChp
bnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gMjsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTEzMyw5ICsxMTMzLDkgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaW5kZXg6IHsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAg
ICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIDAsIFg4Njo6ZWN4
KTsKICAgICAgICAgICAgIGVtaXRQdXRBcmdDb25zdGFudChpbnN0cnVjdGlvbltpICsgMl0udS5v
cGVyYW5kLCA0KTsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNd
LnUub3BlcmFuZCwgOCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0
UHV0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDgsIFg4Njo6ZWN4KTsKICAgICAg
ICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9wdXRfYnlfaW5kZXgpOwogICAgICAg
ICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTUwLDEwICsxMTUwLDEwIEBA
IHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIG1fc3dpdGNo
ZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIGksIGRlZmF1bHRPZmZzZXQsIFN3aXRj
aFJlY29yZDo6SW1tZWRpYXRlKSk7CiAgICAgICAgICAgICBqdW1wVGFibGUtPmN0aU9mZnNldHMu
Z3JvdyhqdW1wVGFibGUtPmJyYW5jaE9mZnNldHMuc2l6ZSgpKTsKIAotICAgICAgICAgICAgZW1p
dEdldFB1dEFyZyhzY3J1dGluZWUsIDAsIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgICAgICAg
ICAgZW1pdEdldFB1dEFyZyhzY3J1dGluZWUsIDAsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIGVt
aXRQdXRBcmdDb25zdGFudCh0YWJsZUluZGV4LCA0KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGks
IE1hY2hpbmU6OmN0aV9vcF9zd2l0Y2hfaW1tKTsKLSAgICAgICAgICAgIG1faml0LmptcF9yKE1h
Y3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuam1wX3IoWDg2OjplYXgpOwog
ICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEx
NjcsMTAgKzExNjcsMTAgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICAgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJsZSwgaSwgZGVm
YXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpDaGFyYWN0ZXIpKTsKICAgICAgICAgICAgIGp1bXBU
YWJsZS0+Y3RpT2Zmc2V0cy5ncm93KGp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0cy5zaXplKCkpOwog
Ci0gICAgICAgICAgICBlbWl0R2V0UHV0QXJnKHNjcnV0aW5lZSwgMCwgTWFjcm9Bc3NlbWJsZXI6
OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0UHV0QXJnKHNjcnV0aW5lZSwgMCwgWDg2OjplY3gp
OwogICAgICAgICAgICAgZW1pdFB1dEFyZ0NvbnN0YW50KHRhYmxlSW5kZXgsIDQpOwogICAgICAg
ICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3N3aXRjaF9jaGFyKTsKLSAgICAgICAg
ICAgIG1faml0LmptcF9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQu
am1wX3IoWDg2OjplYXgpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTExODMsMzUgKzExODMsMzUgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAm
bV9jb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07CiAgICAgICAg
ICAgICBtX3N3aXRjaGVzLmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBpLCBkZWZhdWx0
T2Zmc2V0KSk7CiAKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoc2NydXRpbmVlLCAwLCBNYWNy
b0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoc2NydXRpbmVlLCAw
LCBYODY6OmVjeCk7CiAgICAgICAgICAgICBlbWl0UHV0QXJnQ29uc3RhbnQodGFibGVJbmRleCwg
NCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3Bfc3dpdGNoX3N0cmlu
Zyk7Ci0gICAgICAgICAgICBtX2ppdC5qbXBfcihNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAg
ICAgICAgIG1faml0LmptcF9yKFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewot
ICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAw
LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1
Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgNCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAg
ICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIFg4Njo6
ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3Bl
cmFuZCwgNCwgWDg2OjplY3gpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3Rp
X29wX2RlbF9ieV92YWwpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltp
ICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcjogewotICAgICAgICAgICAg
ZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDFd
LnUub3BlcmFuZCwgMCwgWDg2OjplY3gpOwogICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQg
PSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyc1tpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5k
XSk7CiAgICAgICAgICAgICBlbWl0UHV0QXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZD4oaWRlbnQpLCA0KTsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25b
aSArIDNdLnUub3BlcmFuZCwgOCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAgICBl
bWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDgsIFg4Njo6ZWN4KTsK
ICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9wdXRfZ2V0dGVyKTsKICAg
ICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcHV0X3NldHRlcjogewotICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVj
dGlvbltpICsgMV0udS5vcGVyYW5kLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAg
ICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgMCwgWDg2Ojpl
Y3gpOwogICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVu
dGlmaWVyc1tpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kXSk7CiAgICAgICAgICAgICBlbWl0
UHV0QXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oaWRlbnQpLCA0KTsKLSAg
ICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgOCwg
TWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0
aW9uW2kgKyAzXS51Lm9wZXJhbmQsIDgsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIGVtaXRDYWxs
KGksIE1hY2hpbmU6OmN0aV9vcF9wdXRfc2V0dGVyKTsKICAgICAgICAgICAgIGkgKz0gNDsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTIzNSwxNCArMTIzNSwxNCBAQCB2b2lkIENUSTo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2VxX251bGw6IHsKLSAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgICAgICAg
ICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIFg4Njo6ZWN4
KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9lcV9udWxsKTsKICAg
ICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX25lcV9udWxsOiB7Ci0gICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0
aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgICAgICAg
ICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCAwLCBYODY6OmVj
eCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfbmVxX251bGwpOwog
ICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIGkgKz0gMzsKQEAgLTEyODUsMTAgKzEyODUsMTAgQEAgdm9pZCBDVEk6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgICAgICBpZiAoSlNJbW1lZGlhdGU6
OmlzTnVtYmVyKHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
Sm1wU3JjIG5vdEltbSA9IGl0ZXItPmZyb207CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lmxp
bmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgICAgICBt
X2ppdC5zdWJsX2kzMnIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZSh2YWx1ZSksIE1hY3Jv
QXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdWJsX2kzMnIoZ2V0
RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZSh2YWx1ZSksIFg4Njo6ZWF4KTsKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQubGluayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAg
ICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwotICAgICAgICAgICAg
ICAgICAgICBlbWl0R2V0UHV0QXJnKHNyYzIsIDQsIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAg
ICAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdEdldFB1dEFyZyhzcmMyLCA0LCBYODY6OmVjeCk7CiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9hZGQpOwogICAgICAgICAgICAgICAgICAg
ICBlbWl0UHV0UmVzdWx0KGRzdCk7CiAgICAgICAgICAgICAgICAgICAgIGkgKz0gNDsKQEAgLTEz
MDAsMTEgKzEzMDAsMTEgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub3RJbW0gPSBpdGVyLT5mcm9tOwog
ICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0g
ICAgICAgICAgICBtX2ppdC5zdWJsX3JyKE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1i
bGVyOjplYXgpOwotICAgICAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKE1hY3Jv
QXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuc3VibF9ycihYODY6OmVkeCwgWDg2
OjplYXgpOworICAgICAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFg4Njo6ZWF4
KTsKICAgICAgICAgICAgIG1faml0Lmxpbmsobm90SW1tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAg
ICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVheCwgMCk7Ci0gICAgICAgICAgICBl
bWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplZHgsIDQpOworICAgICAgICAgICAgZW1pdFB1dEFy
ZyhYODY6OmVheCwgMCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKICAg
ICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9hZGQpOwogICAgICAgICAgICAg
ZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAgaSArPSA0OwpAQCAtMTMxNSwxMCArMTMx
NSwxMCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAg
bV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7CiAgICAgICAgICAgICBt
X2ppdC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKICAgICAgICAgICAgIG1f
aml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgZW1p
dEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKKyAgICAgICAg
ICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplZHgpOwogICAgICAgICAgICAg
bV9qaXQubGluayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgZW1pdFB1dEFy
ZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9B
c3NlbWJsZXI6OmVkeCwgNCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsK
KyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplZHgsIDQpOwogICAgICAgICAgICAgZW1pdENh
bGwoaSwgTWFjaGluZTo6Y3RpX29wX2dldF9ieV92YWwpOwogICAgICAgICAgICAgZW1pdFB1dFJl
c3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsK
QEAgLTEzMjcsMTAgKzEzMjcsMTAgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgY2FzZSBvcF9zdWI6IHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
bXBTcmMgbm90SW1tID0gaXRlci0+ZnJvbTsKICAgICAgICAgICAgIG1faml0LmxpbmsoKCsraXRl
ciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgbV9qaXQuYWRkbF9ycihNYWNy
b0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0
LmFkZGxfcnIoWDg2OjplZHgsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIG1faml0Lmxpbmsobm90
SW1tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJs
ZXI6OmVheCwgMCk7Ci0gICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplZHgs
IDQpOworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7CisgICAgICAgICAgICBl
bWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6
OmN0aV9vcF9zdWIpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsg
MV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKQEAgLTEzMzksOCArMTMzOSw4IEBA
IHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIGNhc2Ugb3BfcnNo
aWZ0OiB7CiAgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkp
OwogICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7
Ci0gICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwotICAgICAg
ICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWN4LCA0KTsKKyAgICAgICAgICAgIGVt
aXRQdXRBcmcoWDg2OjplYXgsIDApOworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVjeCwg
NCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfcnNoaWZ0KTsKICAg
ICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBpICs9IDQ7CkBAIC0xMzUwLDEyICsxMzUwLDEyIEBAIHZvaWQgQ1RJOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3Jj
IG5vdEltbTEgPSBpdGVyLT5mcm9tOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNy
YyBub3RJbW0yID0gKCsraXRlciktPmZyb207CiAgICAgICAgICAgICBtX2ppdC5saW5rKCgrK2l0
ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1
Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAg
ICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVy
OjplY3gpOworICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVy
YW5kLCBYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAz
XS51Lm9wZXJhbmQsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIG1faml0Lmxpbmsobm90SW1tMSwg
bV9qaXQubGFiZWwoKSk7CiAgICAgICAgICAgICBtX2ppdC5saW5rKG5vdEltbTIsIG1faml0Lmxh
YmVsKCkpOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsK
LSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVjeCwgNCk7CisgICAgICAg
ICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2
OjplY3gsIDQpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX2xzaGlm
dCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgaSArPSA0OwpAQCAtMTM2OCwxOCArMTM2OCwxOCBAQCB2b2lkIENU
STo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgSlNWYWx1ZSogc3JjMmlt
bSA9IGdldENvbnN0YW50SW1tZWRpYXRlTnVtZXJpY0FyZyhpbnN0cnVjdGlvbltpICsgMl0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIGlmIChzcmMyaW1tKSB7CiAgICAgICAgICAgICAgICAgbV9q
aXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgICAgICBlbWl0
UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplZHgsIDApOwotICAgICAgICAgICAgICAgIGVtaXRHZXRQ
dXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgNCwgTWFjcm9Bc3NlbWJsZXI6OmVj
eCk7CisgICAgICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVkeCwgMCk7CisgICAgICAgICAg
ICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCA0LCBYODY6
OmVjeCk7CiAgICAgICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX2xvb3Bf
aWZfbGVzcyk7Ci0gICAgICAgICAgICAgICAgbV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6
OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICAgICAgbV9qaXQudGVzdGxf
cnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5rKG1faml0
LmVtaXRVbmxpbmtlZEpuZSgpLCBtX2xhYmVsc1tpICsgMyArIHRhcmdldF0pOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0
LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1f
aml0LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6
OmVheCwgMCk7Ci0gICAgICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWR4
LCA0KTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAgICAgICAg
ICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKICAgICAgICAgICAgICAgICBlbWl0Q2Fs
bChpLCBNYWNoaW5lOjpjdGlfb3BfbG9vcF9pZl9sZXNzKTsKLSAgICAgICAgICAgICAgICBtX2pp
dC50ZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAg
ICAgICAgICAgICAgICBtX2ppdC50ZXN0bF9ycihYODY6OmVheCwgWDg2OjplYXgpOwogICAgICAg
ICAgICAgICAgIG1faml0LmxpbmsobV9qaXQuZW1pdFVubGlua2VkSm5lKCksIG1fbGFiZWxzW2kg
KyAzICsgdGFyZ2V0XSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC0x
Mzg5LDkgKzEzODksOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
ICAgICAgICAgdW5zaWduZWQgc3JjRHN0ID0gaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZDsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgbm90SW1tID0gaXRlci0+ZnJvbTsK
ICAgICAgICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwot
ICAgICAgICAgICAgbV9qaXQuc3VibF9pOHIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShK
U0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAg
ICAgICAgIG1faml0LnN1YmxfaThyKGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUoSlNJbW1l
ZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9qaXQubGlu
ayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCAwKTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDApOwog
ICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3ByZV9pbmMpOwogICAgICAg
ICAgICAgZW1pdFB1dFJlc3VsdChzcmNEc3QpOwogICAgICAgICAgICAgaSArPSAyOwpAQCAtMTQw
MiwxMSArMTQwMiwxMSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
ICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7CiAgICAg
ICAgICAgICBtX2ppdC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKICAgICAg
ICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAg
ICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsK
KyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplZHgpOwogICAg
ICAgICAgICAgbV9qaXQubGluayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAg
ZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKLSAgICAgICAgICAgIGVtaXRQdXRB
cmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgNCk7Ci0gICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3Jv
QXNzZW1ibGVyOjplY3gsIDgpOworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7
CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKKyAgICAgICAgICAgIGVtaXRQ
dXRBcmcoWDg2OjplY3gsIDgpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3Rp
X29wX3B1dF9ieV92YWwpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNDE1LDkgKzE0MTUsOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICAgICAgZW1pdFNsb3dTY3JpcHRDaGVjayhpKTsKIAogICAgICAgICAgICAgbV9q
aXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIGVtaXRQdXRB
cmcoTWFjcm9Bc3NlbWJsZXI6OmVheCwgMCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6
ZWF4LCAwKTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9qdHJ1ZSk7
Ci0gICAgICAgICAgICBtX2ppdC50ZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX3JyKFg4Njo6ZWF4LCBYODY6
OmVheCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBpbnN0cnVjdGlvbltpICsgMl0u
dS5vcGVyYW5kOwogICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKbmUo
KSwgbV9sYWJlbHNbaSArIDIgKyB0YXJnZXRdKTsKICAgICAgICAgICAgIGkgKz0gMzsKQEAgLTE0
MjcsOSArMTQyNyw5IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kOwog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub3RJbW0gPSBpdGVyLT5mcm9tOwog
ICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0g
ICAgICAgICAgICBtX2ppdC5hZGRsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpT
SW1tZWRpYXRlOjpvbmVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAg
ICAgICAgbV9qaXQuYWRkbF9pOHIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVk
aWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBYODY6OmVheCk7CiAgICAgICAgICAgICBtX2ppdC5saW5r
KG5vdEltbSwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNz
ZW1ibGVyOjplYXgsIDApOworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7CiAg
ICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfcHJlX2RlYyk7CiAgICAgICAg
ICAgICBlbWl0UHV0UmVzdWx0KHNyY0RzdCk7CiAgICAgICAgICAgICBpICs9IDI7CkBAIC0xNDQw
LDE4ICsxNDQwLDE4IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgICAgICBKU1ZhbHVlKiBzcmMyaW1tID0gZ2V0Q29uc3RhbnRJbW1lZGlhdGVOdW1lcmljQXJn
KGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKHNyYzJpbW0p
IHsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkp
OwotICAgICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgMCk7Ci0g
ICAgICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5k
LCA0LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4
Njo6ZWR4LCAwKTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kg
KyAyXS51Lm9wZXJhbmQsIDQsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgICAgICBlbWl0Q2FsbChp
LCBNYWNoaW5lOjpjdGlfb3Bfamxlc3MpOwotICAgICAgICAgICAgICAgIG1faml0LnRlc3RsX3Jy
KE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAg
ICAgIG1faml0LnRlc3RsX3JyKFg4Njo6ZWF4LCBYODY6OmVheCk7CiAgICAgICAgICAgICAgICAg
bV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBtX2xhYmVsc1tpICsgMyArIHRhcmdl
dF0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5rKGl0
ZXItPmZyb20sIG1faml0LmxhYmVsKCkpOwogICAgICAgICAgICAgICAgIG1faml0LmxpbmsoKCsr
aXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgIGVtaXRQdXRBcmco
TWFjcm9Bc3NlbWJsZXI6OmVheCwgMCk7Ci0gICAgICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNy
b0Fzc2VtYmxlcjo6ZWR4LCA0KTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4
LCAwKTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKICAgICAgICAg
ICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3Bfamxlc3MpOwotICAgICAgICAgICAg
ICAgIG1faml0LnRlc3RsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjpl
YXgpOworICAgICAgICAgICAgICAgIG1faml0LnRlc3RsX3JyKFg4Njo6ZWF4LCBYODY6OmVheCk7
CiAgICAgICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBtX2xh
YmVsc1tpICsgMyArIHRhcmdldF0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaSArPSA0
OwpAQCAtMTQ1OSw4ICsxNDU5LDggQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25vdDogewogICAgICAgICAgICAgbV9qaXQu
bGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIG1faml0Lnhvcmxf
aThyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwot
ICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKKyAgICAgICAg
ICAgIG1faml0LnhvcmxfaThyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wsIFg4Njo6ZWF4
KTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDApOwogICAgICAgICAgICAgZW1p
dENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX25vdCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0
KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaSArPSAzOwpAQCAt
MTQ2OCw5ICsxNDY4LDkgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2pmYWxzZTogewogICAgICAgICAgICAgbV9qaXQubGlu
ayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFj
cm9Bc3NlbWJsZXI6OmVheCwgMCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAw
KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9qdHJ1ZSk7Ci0gICAg
ICAgICAgICBtX2ppdC50ZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX3JyKFg4Njo6ZWF4LCBYODY6OmVheCk7
CiAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBpbnN0cnVjdGlvbltpICsgMl0udS5vcGVy
YW5kOwogICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBtX2xh
YmVsc1tpICsgMiArIHRhcmdldF0pOyAvLyBpbnZlcnRlZCEKICAgICAgICAgICAgIGkgKz0gMzsK
QEAgLTE0ODAsMTcgKzE0ODAsMTcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9IGluc3RydWN0aW9uW2kgKyAyXS51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkp
OwogICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7
Ci0gICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOworICAgICAg
ICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBN
YWNoaW5lOjpjdGlfb3BfcG9zdF9pbmMpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0
cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIGVtaXRHZXRDVElQYXJhbShD
VElfQVJHU18ybmRSZXN1bHQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgZW1p
dEdldENUSVBhcmFtKENUSV9BUkdTXzJuZFJlc3VsdCwgWDg2OjplYXgpOwogICAgICAgICAgICAg
ZW1pdFB1dFJlc3VsdChzcmNEc3QpOwogICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9iaXRub3Q6IHsKICAgICAgICAgICAg
IG1faml0LmxpbmsoaXRlci0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbWl0
UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOworICAgICAgICAgICAgZW1pdFB1dEFyZyhY
ODY6OmVheCwgMCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfYml0
bm90KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICBpICs9IDM7CkBAIC0xNTAyLDIwICsxNTAyLDIwIEBAIHZvaWQg
Q1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICB1bnNpZ25lZCBkc3Qg
PSBpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGdldENvbnN0
YW50SW1tZWRpYXRlTnVtZXJpY0FyZyhzcmMxKSkgewogICAgICAgICAgICAgICAgIG1faml0Lmxp
bmsoaXRlci0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICAgICAgZW1pdEdldFB1
dEFyZyhzcmMxLCAwLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICAgICAgICAgICAgICBlbWl0
UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDQpOworICAgICAgICAgICAgICAgIGVtaXRHZXRQ
dXRBcmcoc3JjMSwgMCwgWDg2OjplY3gpOworICAgICAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2
OjplYXgsIDQpOwogICAgICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9i
aXRhbmQpOwogICAgICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoZHN0KTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoZ2V0Q29uc3RhbnRJbW1lZGlhdGVOdW1lcmljQXJnKHNyYzIpKSB7CiAgICAg
ICAgICAgICAgICAgbV9qaXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAg
ICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwotICAgICAgICAg
ICAgICAgIGVtaXRHZXRQdXRBcmcoc3JjMiwgNCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAg
ICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7CisgICAgICAgICAgICAgICAgZW1p
dEdldFB1dEFyZyhzcmMyLCA0LCBYODY6OmVjeCk7CiAgICAgICAgICAgICAgICAgZW1pdENhbGwo
aSwgTWFjaGluZTo6Y3RpX29wX2JpdGFuZCk7CiAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3Vs
dChkc3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5r
KGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgIGVtaXRHZXRQdXRB
cmcoc3JjMSwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7Ci0gICAgICAgICAgICAgICAgZW1pdFB1
dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWR4LCA0KTsKKyAgICAgICAgICAgICAgICBlbWl0R2V0UHV0
QXJnKHNyYzEsIDAsIFg4Njo6ZWN4KTsKKyAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6
ZWR4LCA0KTsKICAgICAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfYml0
YW5kKTsKICAgICAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGRzdCk7CiAgICAgICAgICAgICB9
CkBAIC0xNTI0LDkgKzE1MjQsOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfanRydWU6IHsKICAgICAgICAgICAgIG1faml0
LmxpbmsoaXRlci0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbWl0UHV0QXJn
KE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVh
eCwgMCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfanRydWUpOwot
ICAgICAgICAgICAgbV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC50ZXN0bF9ycihYODY6OmVheCwgWDg2Ojpl
YXgpOwogICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0ID0gaW5zdHJ1Y3Rpb25baSArIDJdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIG1faml0LmxpbmsobV9qaXQuZW1pdFVubGlua2VkSm5lKCks
IG1fbGFiZWxzW2kgKyAyICsgdGFyZ2V0XSk7CiAgICAgICAgICAgICBpICs9IDM7CkBAIC0xNTM2
LDE4ICsxNTM2LDE4IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAg
ICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kOwog
ICAgICAgICAgICAgbV9qaXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKICAgICAg
ICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAg
ICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKKyAgICAgICAgICAgIGVt
aXRQdXRBcmcoWDg2OjplYXgsIDApOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6
Y3RpX29wX3Bvc3RfZGVjKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25b
aSArIDFdLnUub3BlcmFuZCk7Ci0gICAgICAgICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1Nf
Mm5kUmVzdWx0LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRHZXRDVElQ
YXJhbShDVElfQVJHU18ybmRSZXN1bHQsIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQdXRS
ZXN1bHQoc3JjRHN0KTsKICAgICAgICAgICAgIGkgKz0gMzsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYml0eG9yOiB7CiAgICAgICAgICAgICBtX2ppdC5s
aW5rKGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhN
YWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3Nl
bWJsZXI6OmVkeCwgNCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAg
ICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplZHgsIDQpOwogICAgICAgICAgICAgZW1pdENhbGwo
aSwgTWFjaGluZTo6Y3RpX29wX2JpdHhvcik7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGlu
c3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaSArPSA0OwpAQCAtMTU1
NSw4ICsxNTU1LDggQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2JpdG9yOiB7CiAgICAgICAgICAgICBtX2ppdC5saW5rKGl0
ZXItPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCAwKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6
OmVkeCwgNCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAgICAgICAg
ICAgIGVtaXRQdXRBcmcoWDg2OjplZHgsIDQpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFj
aGluZTo6Y3RpX29wX2JpdG9yKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC0xNTY2LDEyICsx
NTY2LDEyIEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIG5vdEltbTEgPSBpdGVyLT5mcm9tOwogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub3RJbW0yID0gKCsraXRlciktPmZyb207CiAgICAg
ICAgICAgICBtX2ppdC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAg
ICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
LSAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6
ZWN4KTsKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShYODY6OmVheCk7
CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoWDg2OjplY3gpOwogICAg
ICAgICAgICAgbV9qaXQubGluayhub3RJbW0xLCBtX2ppdC5sYWJlbCgpKTsKICAgICAgICAgICAg
IG1faml0Lmxpbmsobm90SW1tMiwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbWl0UHV0
QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwotICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNy
b0Fzc2VtYmxlcjo6ZWN4LCA0KTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDAp
OworICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVjeCwgNCk7CiAgICAgICAgICAgICBlbWl0
Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfbW9kKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQo
aW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC0x
NTg5LDkgKzE1ODksOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogdm9p
ZCBDVEk6OnByaXZhdGVDb21waWxlKCkKIHsKICAgICAvLyBDb3VsZCB1c2UgYSBwb3BsX20sIGJ1
dCB3b3VsZCBuZWVkIHRvIG9mZnNldCB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9uIGlmIHNvLgot
ICAgIG1faml0LnBvcGxfcihNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICBlbWl0R2V0Q1RJUGFy
YW0oQ1RJX0FSR1NfciwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7IC8vIGVkaSA6PSByCi0gICAgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKE1hY3JvQXNzZW1ibGVyOjplY3gsIFJlZ2lzdGVyRmlsZTo6
Q1RJUmV0dXJuRUlQKTsKKyAgICBtX2ppdC5wb3BsX3IoWDg2OjplY3gpOworICAgIGVtaXRHZXRD
VElQYXJhbShDVElfQVJHU19yLCBYODY6OmVkaSk7IC8vIGVkaSA6PSByCisgICAgZW1pdFB1dFRv
Q2FsbEZyYW1lSGVhZGVyKFg4Njo6ZWN4LCBSZWdpc3RlckZpbGU6OkNUSVJldHVybkVJUCk7CiAK
ICAgICBwcml2YXRlQ29tcGlsZU1haW5QYXNzKCk7CiAgICAgcHJpdmF0ZUNvbXBpbGVMaW5rUGFz
cygpOwpAQCAtMTY1MSwxNCArMTY1MSwxNCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGUoKQog
dm9pZCogQ1RJOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmKFN0cnVjdHVyZUlEKiBzdHJ1Y3R1
cmVJRCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKIHsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gb2Jq
ZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmVJRC4KLSAgICBtX2ppdC50ZXN0bF9pMzJyKEpTSW1t
ZWRpYXRlOjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC50ZXN0bF9p
MzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBYODY6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
OkptcFNyYyBmYWlsdXJlQ2FzZXMxID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgbV9q
aXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSwgT0JK
RUNUX09GRlNFVChKU0NlbGwsIG1fc3RydWN0dXJlSUQpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
KyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0dXJl
SUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJRCksIFg4Njo6ZWF4KTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczIgPSBtX2ppdC5lbWl0VW5saW5r
ZWRKbmUoKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXREaXJlY3RPZmZzZXQKLSAg
ICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdl
KSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgbV9qaXQu
bW92bF9tcihjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSopLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZT
RVQoSlNPYmplY3QsIG1fcHJvcGVydHlTdG9yYWdlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAg
ICBtX2ppdC5tb3ZsX21yKGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiksIFg4Njo6ZWF4
LCBYODY6OmVheCk7CiAgICAgbV9qaXQucmV0KCk7CiAKICAgICB2b2lkKiBjb2RlID0gbV9qaXQu
Y29weSgpOwpAQCAtMTY3OCwxMiArMTY3OCwxMiBAQCB2b2lkKiBDVEk6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvKFN0CiAgICAgLy8gcmVmZXJlbmNpbmcgdGhlIHByb3RvdHlwZSBvYmplY3Qg
LSBsZXQncyBzcGVjdWxhdGl2ZWx5IGxvYWQgaXQncyB0YWJsZSBuaWNlIGFuZCBlYXJseSEpCiAg
ICAgSlNPYmplY3QqIHByb3RvT2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihzdHJ1Y3R1
cmVJRC0+cHJvdG90eXBlKCkpOwogICAgIE93bkFycmF5UHRyPEpTVmFsdWUqPiogcHJvdG9Qcm9w
ZXJ0eVN0b3JhZ2UgPSAmcHJvdG9PYmplY3QtPm1fcHJvcGVydHlTdG9yYWdlOwotICAgIG1faml0
Lm1vdmxfbXIoc3RhdGljX2Nhc3Q8dm9pZCo+KHByb3RvUHJvcGVydHlTdG9yYWdlKSwgTWFjcm9B
c3NlbWJsZXI6OmVkeCk7CisgICAgbV9qaXQubW92bF9tcihzdGF0aWNfY2FzdDx2b2lkKj4ocHJv
dG9Qcm9wZXJ0eVN0b3JhZ2UpLCBYODY6OmVkeCk7CiAKICAgICAvLyBjaGVjayBlYXggaXMgYW4g
b2JqZWN0IG9mIHRoZSByaWdodCBTdHJ1Y3R1cmVJRC4KLSAgICBtX2ppdC50ZXN0bF9pMzJyKEpT
SW1tZWRpYXRlOjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC50ZXN0
bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBYODY6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMxID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAg
bV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSwg
T0JKRUNUX09GRlNFVChKU0NlbGwsIG1fc3RydWN0dXJlSUQpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKKyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlSUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJRCksIFg4Njo6ZWF4KTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczIgPSBtX2ppdC5lbWl0VW5s
aW5rZWRKbmUoKTsKIAogICAgIC8vIENoZWNrIHRoZSBwcm90b3R5cGUgb2JqZWN0J3MgU3RydWN0
dXJlSUQgaGFkIG5vdCBjaGFuZ2VkLgpAQCAtMTY5Miw3ICsxNjkyLDcgQEAgdm9pZCogQ1RJOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdAogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMg
ZmFpbHVyZUNhc2VzMyA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwogCiAgICAgLy8gQ2hlY2tz
IG91dCBva2F5ISAtIGdldERpcmVjdE9mZnNldAotICAgIG1faml0Lm1vdmxfbXIoY2FjaGVkT2Zm
c2V0ICogc2l6ZW9mKEpTVmFsdWUqKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCk7CisgICAgbV9qaXQubW92bF9tcihjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1
ZSopLCBYODY6OmVkeCwgWDg2OjplYXgpOwogCiAgICAgbV9qaXQucmV0KCk7CiAKQEAgLTE3MTUs
OSArMTcxNSw5IEBAIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3QKICAg
ICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkptcFNyYz4gYnVja2V0c09mRmFpbDsKIAogICAgIC8v
IENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZUlELgotICAgIG1f
aml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgp
OworICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWF4KTsK
ICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSk7Ci0gICAg
bV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSwg
T0JKRUNUX09GRlNFVChKU0NlbGwsIG1fc3RydWN0dXJlSUQpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKKyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0
dXJlSUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJRCksIFg4Njo6ZWF4KTsK
ICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSk7CiAKICAg
ICBTdHJ1Y3R1cmVJRCogY3VyclN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7CkBAIC0xNzM1LDgg
KzE3MzUsOCBAQCB2b2lkKiBDVEk6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKFN0CiAgICAg
QVNTRVJUKHByb3RvT2JqZWN0KTsKICAKICAgICBPd25BcnJheVB0cjxKU1ZhbHVlKj4qIHByb3Rv
UHJvcGVydHlTdG9yYWdlID0gJnN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocHJvdG9PYmplY3QpLT5t
X3Byb3BlcnR5U3RvcmFnZTsKLSAgICBtX2ppdC5tb3ZsX21yKHN0YXRpY19jYXN0PHZvaWQqPihw
cm90b1Byb3BlcnR5U3RvcmFnZSksIE1hY3JvQXNzZW1ibGVyOjplZHgpOwotICAgIG1faml0Lm1v
dmxfbXIoY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUqKSwgTWFjcm9Bc3NlbWJsZXI6OmVk
eCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgbV9qaXQubW92bF9tcihzdGF0aWNfY2FzdDx2
b2lkKj4ocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UpLCBYODY6OmVkeCk7CisgICAgbV9qaXQubW92bF9t
cihjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSopLCBYODY6OmVkeCwgWDg2OjplYXgpOwog
ICAgIG1faml0LnJldCgpOwogCiAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQobV9qaXQuZW1pdFVu
bGlua2VkSm1wKCkpOwpAQCAtMTc1MywxNCArMTc1MywxNCBAQCB2b2lkKiBDVEk6OnByaXZhdGVD
b21waWxlR2V0QnlJZENoYWluKFN0CiB2b2lkKiBDVEk6OnByaXZhdGVDb21waWxlUHV0QnlJZFJl
cGxhY2UoU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0KQogewog
ICAgIC8vIGNoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZUlELgot
ICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6
ZWF4KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczEgPSBtX2ppdC5l
bWl0VW5saW5rZWRKbmUoKTsKLSAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdD4oc3RydWN0dXJlSUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJ
RCksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LmNtcGxfaTMybShyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCksIE9CSkVDVF9PRkZTRVQoSlNDZWxsLCBtX3N0
cnVjdHVyZUlEKSwgWDg2OjplYXgpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVy
ZUNhc2VzMiA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwogCiAgICAgLy8gY2hlY2tzIG91dCBv
a2F5ISAtIHB1dERpcmVjdE9mZnNldAotICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChK
U09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5tb3ZsX3JtKE1hY3JvQXNzZW1ibGVyOjplZHgsIGNh
Y2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAg
IG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2Up
LCBYODY6OmVheCwgWDg2OjplYXgpOworICAgIG1faml0Lm1vdmxfcm0oWDg2OjplZHgsIGNhY2hl
ZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiksIFg4Njo6ZWF4KTsKICAgICBtX2ppdC5yZXQoKTsK
IAogICAgIHZvaWQqIGNvZGUgPSBtX2ppdC5jb3B5KCk7CkBAIC0xNzc3LDE4ICsxNzc3LDE4IEBA
IHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkUmVwbGFjZSgKIHZvaWQqIENUSTo6cHJp
dmF0ZUFycmF5TGVuZ3RoVHJhbXBvbGluZSgpCiB7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFy
cmF5Ci0gICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywg
WDg2OjplYXgpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMSA9IG1f
aml0LmVtaXRVbmxpbmtlZEpuZSgpOwotICAgIG1faml0LmNtcGxfaTMybShyZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPihtX21hY2hpbmUtPm1fanNBcnJheVZwdHIpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4KTsKKyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9t
YWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgWDg2OjplYXgpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpK
bXBTcmMgZmFpbHVyZUNhc2VzMiA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwogCiAgICAgLy8g
Q2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIHN0b3JhZ2UKLSAgICBt
X2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9zdG9yYWdlKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgbV9qaXQubW92bF9tcihPQkpF
Q1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNB
cnJheSwgbV9zdG9yYWdlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAgICBtX2ppdC5tb3ZsX21y
KE9CSkVDVF9PRkZTRVQoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCksIFg4Njo6ZWF4LCBYODY6OmVh
eCk7CiAKLSAgICBtX2ppdC5hZGRsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1i
bGVyOjplYXgpOworICAgIG1faml0LmFkZGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKICAgICBN
YWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczMgPSBtX2ppdC5lbWl0VW5saW5rZWRK
bygpOwotICAgIG1faml0LmFkZGxfaThyKDEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1f
aml0LmFkZGxfaThyKDEsIFg4Njo6ZWF4KTsKICAgICAKICAgICBtX2ppdC5yZXQoKTsKIApAQCAt
MTgwNSwxOCArMTgwNSwxOCBAQCB2b2lkKiBDVEk6OnByaXZhdGVBcnJheUxlbmd0aFRyYW1wb2xp
bmUoCiB2b2lkKiBDVEk6OnByaXZhdGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lKCkKIHsKICAgICAv
LyBDaGVjayBlYXggaXMgYSBzdHJpbmcKLSAgICBtX2ppdC50ZXN0bF9pMzJyKEpTSW1tZWRpYXRl
OjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC50ZXN0bF9pMzJyKEpT
SW1tZWRpYXRlOjpUYWdNYXNrLCBYODY6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNy
YyBmYWlsdXJlQ2FzZXMxID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgbV9qaXQuY21w
bF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9qc1N0cmluZ1Zw
dHIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzU3RyaW5nVnB0ciksIFg4Njo6ZWF4KTsK
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczIgPSBtX2ppdC5lbWl0VW5s
aW5rZWRKbmUoKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBm
cm9tIHRoZSBVc3RyaW5nLgotICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU1N0cmlu
ZywgbV92YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUKFVTdHJpbmcsIG1fcmVwKSwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgbV9qaXQubW92bF9tcihPQkpFQ1Rf
T0ZGU0VUKFVTdHJpbmc6OlJlcCwgbGVuKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTU3RyaW5nLCBt
X3ZhbHVlKSArIE9CSkVDVF9PRkZTRVQoVVN0cmluZywgbV9yZXApLCBYODY6OmVheCwgWDg2Ojpl
YXgpOworICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChVU3RyaW5nOjpSZXAsIGxlbiks
IFg4Njo6ZWF4LCBYODY6OmVheCk7CiAKLSAgICBtX2ppdC5hZGRsX3JyKE1hY3JvQXNzZW1ibGVy
OjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LmFkZGxfcnIoWDg2OjplYXgs
IFg4Njo6ZWF4KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczMgPSBt
X2ppdC5lbWl0VW5saW5rZWRKbygpOwotICAgIG1faml0LmFkZGxfaThyKDEsIE1hY3JvQXNzZW1i
bGVyOjplYXgpOworICAgIG1faml0LmFkZGxfaThyKDEsIFg4Njo6ZWF4KTsKICAgICAKICAgICBt
X2ppdC5yZXQoKTsKIApAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCogQ1RJOjpjb21waWxlUmVn
RXhwKEV4ZWNTdGF0ZSogZXhlYwogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgICAgICAgICAgICAg
ICAgICsgMyAqIHNpemVvZih2b2lkKikKICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAsIE1h
Y3JvQXNzZW1ibGVyOjplc3AsIFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgLCBYODY6OmVzcCwgV1JFQ0dlbmVyYXRvcjo6b3V0cHV0UmVnaXN0ZXIp
OwogICAgIAogICAgIC8vIHJlc3RhcnQgcG9pbnQgb24gbWF0Y2ggZmFpbC4KICAgICBXUkVDR2Vu
ZXJhdG9yOjpKbXBEc3QgbmV4dExhYmVsID0gaml0LmxhYmVsKCk7CkBAIC0xODgxLDE2ICsxODgx
LDE2IEBAIHZvaWQqIENUSTo6Y29tcGlsZVJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMKICAgICBXUkVD
R2VuZXJhdG9yOjpKbXBTcmMgbm9PdXRwdXQgPSBqaXQuZW1pdFVubGlua2VkSmUoKTsKIAogICAg
IGppdC5tb3ZsX3JtKFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCA0LCBX
UkVDR2VuZXJhdG9yOjpvdXRwdXRSZWdpc3Rlcik7Ci0gICAgaml0LnBvcGxfcihNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKLSAgICBqaXQubW92bF9ybShNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBXUkVDR2Vu
ZXJhdG9yOjpvdXRwdXRSZWdpc3Rlcik7CisgICAgaml0LnBvcGxfcihYODY6OmVheCk7CisgICAg
aml0Lm1vdmxfcm0oWDg2OjplYXgsIFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKICAg
ICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICBq
aXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKICAgICBqaXQucmV0KCk7
CiAgICAgCiAgICAgaml0Lmxpbmsobm9PdXRwdXQsIGppdC5sYWJlbCgpKTsKICAgICAKLSAgICBq
aXQucG9wbF9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgIGppdC5tb3ZsX3JtKE1hY3JvQXNz
ZW1ibGVyOjplYXgsIFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKKyAgICBqaXQucG9w
bF9yKFg4Njo6ZWF4KTsKKyAgICBqaXQubW92bF9ybShYODY6OmVheCwgV1JFQ0dlbmVyYXRvcjo6
b3V0cHV0UmVnaXN0ZXIpOwogICAgIGppdC5wb3BsX3IoV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFZh
bHVlUmVnaXN0ZXIpOwogICAgIGppdC5wb3BsX3IoV1JFQ0dlbmVyYXRvcjo6b3V0cHV0UmVnaXN0
ZXIpOwogICAgIGppdC5yZXQoKTsKQEAgLTE5MDMsMTUgKzE5MDMsMTUgQEAgdm9pZCogQ1RJOjpj
b21waWxlUmVnRXhwKEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBqaXQubGluayhmYWlsdXJlc1tp
XSwgaGVyZSk7CiAgICAgZmFpbHVyZXMuY2xlYXIoKTsKIAotICAgIGppdC5tb3ZsX21yKE1hY3Jv
QXNzZW1ibGVyOjplc3AsIFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsK
KyAgICBqaXQubW92bF9tcihYODY6OmVzcCwgV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFBvc2l0aW9u
UmVnaXN0ZXIpOwogICAgIGppdC5hZGRsX2k4cigxLCBXUkVDR2VuZXJhdG9yOjpjdXJyZW50UG9z
aXRpb25SZWdpc3Rlcik7Ci0gICAgaml0Lm1vdmxfcm0oV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFBv
c2l0aW9uUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjplc3ApOworICAgIGppdC5tb3ZsX3JtKFdS
RUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCBYODY6OmVzcCk7CiAgICAgaml0
LmNtcGxfcnIoV1JFQ0dlbmVyYXRvcjo6bGVuZ3RoUmVnaXN0ZXIsIFdSRUNHZW5lcmF0b3I6OmN1
cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKICAgICBqaXQubGluayhqaXQuZW1pdFVubGlua2VkSmxl
KCksIG5leHRMYWJlbCk7CiAKLSAgICBqaXQuYWRkbF9pOHIoNCwgTWFjcm9Bc3NlbWJsZXI6OmVz
cCk7CisgICAgaml0LmFkZGxfaThyKDQsIFg4Njo6ZXNwKTsKIAotICAgIGppdC5tb3ZsX2kzMnIo
LTEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIGppdC5tb3ZsX2kzMnIoLTEsIFg4Njo6ZWF4
KTsKICAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsK
ICAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKICAgICBqaXQu
cmV0KCk7CkluZGV4OiBWTS9DVEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9DVEkuaAkocmV2aXNpb24g
MzYyOTUpCisrKyBWTS9DVEkuaAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRHZXRQdXRBcmcodW5zaWduZWQgc3JjLCB1
bnNpZ25lZCBvZmZzZXQsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHNjcmF0Y2gpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgc3JjLCB1bnNp
Z25lZCBvZmZzZXQpOwogICAgICAgICB2b2lkIGVtaXRQdXRBcmdDb25zdGFudCh1bnNpZ25lZCB2
YWx1ZSwgdW5zaWduZWQgb2Zmc2V0KTsKLSAgICAgICAgdm9pZCBlbWl0UHV0UmVzdWx0KHVuc2ln
bmVkIGRzdCwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZnJvbSA9IE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgICAgICB2b2lkIGVtaXRQdXRSZXN1bHQodW5zaWduZWQgZHN0LCBNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCBmcm9tID0gWDg2OjplYXgpOwogCiAgICAgICAgIHZvaWQgZW1p
dFB1dENUSVBhcmFtKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGZyb20sIHVuc2lnbmVkIG5h
bWUpOwogICAgICAgICB2b2lkIGVtaXRHZXRDVElQYXJhbSh1bnNpZ25lZCBuYW1lLCBNYWNyb0Fz
c2VtYmxlcjo6UmVnaXN0ZXJJRCB0byk7CkluZGV4OiBtYXNtL1g4NkFzc2VtYmxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIG1hc20vWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDM2MzAxKQorKysgbWFzbS9Y
ODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDggKzE0Nyw3IEBAIHByaXZhdGU6
CiAjZGVmaW5lIFNJQih0eXBlLCByZWcsIHJtKSBNT0RSTSh0eXBlLCByZWcsIHJtKQogI2RlZmlu
ZSBDQU5fU0lHTl9FWFRFTkRfOF8zMih2YWx1ZSkgKHZhbHVlID09ICgoaW50KShzaWduZWQgY2hh
cil2YWx1ZSkpCiAKLWNsYXNzIFg4NkFzc2VtYmxlciB7Ci1wdWJsaWM6CituYW1lc3BhY2UgWDg2
IHsKICAgICB0eXBlZGVmIGVudW0gewogICAgICAgICBlYXgsCiAgICAgICAgIGVjeCwKQEAgLTE1
OSwxMCArMTU4LDE1IEBAIHB1YmxpYzoKICAgICAgICAgZXNpLAogICAgICAgICBlZGksCiAKLSAg
ICAgICAgTk9fQkFTRSAgPSBlYnAsCi0gICAgICAgIEhBU19TSUIgID0gZXNwLAotICAgICAgICBO
T19TQ0FMRSA9IGVzcCwKKyAgICAgICAgbm9CYXNlID0gZWJwLAorICAgICAgICBoYXNTaWIgPSBl
c3AsCisgICAgICAgIG5vU2NhbGUgPSBlc3AsCiAgICAgfSBSZWdpc3RlcklEOworfQorCitjbGFz
cyBYODZBc3NlbWJsZXIgeworcHVibGljOgorICAgIHR5cGVkZWYgWDg2OjpSZWdpc3RlcklEIFJl
Z2lzdGVySUQ7CiAKICAgICB0eXBlZGVmIGVudW0gewogICAgICAgICBPUF9BRERfRXZHdiAgICAg
ICAgICAgICAgICAgICAgID0gMHgwMSwKQEAgLTc4OCwyOSArNzkyLDI5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGVtaXRNb2RSbV9ybShSZWdpc3RlcklEIHJlZywgdm9pZCogYWRkcikKICAgICB7
Ci0gICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE1PRFJNKDAsIHJlZywgTk9fQkFTRSkpOworICAg
ICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShNT0RSTSgwLCByZWcsIFg4Njo6bm9CYXNlKSk7CiAgICAg
ICAgIG1fYnVmZmVyLT5wdXRJbnQoKGludClhZGRyKTsKICAgICB9CiAKICAgICB2b2lkIGVtaXRN
b2RSbV9ybShSZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKLSAgICAgICAg
aWYgKGJhc2UgPT0gZXNwKSB7Ci0gICAgICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShNT0RSTSgw
LCByZWcsIEhBU19TSUIpKTsKLSAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKFNJQigwLCBO
T19TQ0FMRSwgZXNwKSk7CisgICAgICAgIGlmIChiYXNlID09IFg4Njo6ZXNwKSB7CisgICAgICAg
ICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShNT0RSTSgwLCByZWcsIFg4Njo6aGFzU2liKSk7CisgICAg
ICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShTSUIoMCwgWDg2Ojpub1NjYWxlLCBYODY6OmVzcCkp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE1PRFJNKDAs
IHJlZywgYmFzZSkpOwogICAgIH0KIAogICAgIHZvaWQgZW1pdE1vZFJtX3JtX1VuY2hlY2tlZChS
ZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBiYXNlLCBpbnQgb2Zmc2V0KQogICAgIHsKLSAgICAg
ICAgaWYgKGJhc2UgPT0gZXNwKSB7CisgICAgICAgIGlmIChiYXNlID09IFg4Njo6ZXNwKSB7CiAg
ICAgICAgICAgICBpZiAoQ0FOX1NJR05fRVhURU5EXzhfMzIob2Zmc2V0KSkgewotICAgICAgICAg
ICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlVW5jaGVja2VkKE1PRFJNKDEsIHJlZywgSEFTX1NJQikp
OwotICAgICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlVW5jaGVja2VkKFNJQigwLCBOT19T
Q0FMRSwgZXNwKSk7CisgICAgICAgICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQo
TU9EUk0oMSwgcmVnLCBYODY6Omhhc1NpYikpOworICAgICAgICAgICAgICAgIG1fYnVmZmVyLT5w
dXRCeXRlVW5jaGVja2VkKFNJQigwLCBYODY6Om5vU2NhbGUsIFg4Njo6ZXNwKSk7CiAgICAgICAg
ICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQob2Zmc2V0KTsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQoTU9E
Uk0oMiwgcmVnLCBIQVNfU0lCKSk7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGVV
bmNoZWNrZWQoU0lCKDAsIE5PX1NDQUxFLCBlc3ApKTsKKyAgICAgICAgICAgICAgICBtX2J1ZmZl
ci0+cHV0Qnl0ZVVuY2hlY2tlZChNT0RSTSgyLCByZWcsIFg4Njo6aGFzU2liKSk7CisgICAgICAg
ICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQoU0lCKDAsIFg4Njo6bm9TY2FsZSwg
WDg2Ojplc3ApKTsKICAgICAgICAgICAgICAgICBtX2J1ZmZlci0+cHV0SW50VW5jaGVja2VkKG9m
ZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CkBAIC04MzYsNyArODQwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgd2hpbGUgKHNjYWxlID4+PSAxKQogICAgICAgICAgICAgc2hp
ZnQrKzsKICAgICAKLSAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoTU9EUk0oMCwgcmVnLCBIQVNf
U0lCKSk7CisgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE1PRFJNKDAsIHJlZywgWDg2OjpoYXNT
aWIpKTsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoU0lCKHNoaWZ0LCBpbmRleCwgYmFzZSkp
OwogICAgIH0KIApAQCAtODQ3LDExICs4NTEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNo
aWZ0Kys7CiAgICAgCiAgICAgICAgIGlmIChDQU5fU0lHTl9FWFRFTkRfOF8zMihvZmZzZXQpKSB7
Ci0gICAgICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShNT0RSTSgxLCByZWcsIEhBU19TSUIpKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE1PRFJNKDEsIHJlZywgWDg2OjpoYXNTaWIp
KTsKICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKFNJQihzaGlmdCwgaW5kZXgsIGJhc2Up
KTsKICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKG9mZnNldCk7CiAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShNT0RSTSgyLCByZWcsIEhBU19TSUIp
KTsKKyAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE1PRFJNKDIsIHJlZywgWDg2OjpoYXNT
aWIpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKFNJQihzaGlmdCwgaW5kZXgsIGJh
c2UpKTsKICAgICAgICAgICAgIG1fYnVmZmVyLT5wdXRJbnQob2Zmc2V0KTsKICAgICAgICAgfQpJ
bmRleDogd3JlYy9XUkVDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB3cmVjL1dSRUMuY3BwCShyZXZpc2lv
biAzNjMwMSkKKysrIHdyZWMvV1JFQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Nyw3ICs1Nzcs
NyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlTm9uR3JlZWR5UXVhCiAgICAgLy8gKDIu
MSkgcmVjdXJzaXZlbHkgY2FsbCB0byBwYXJzZUFsdGVybmF0aXZlLCBpZiBpdCBmYWxscyB0aHJv
dWdoLCBzdWNjZXNzIQogICAgIG1faml0LnB1c2hsX3IoY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIp
OwogICAgIG1fcGFyc2VyLnBhcnNlQWx0ZXJuYXRpdmUobmV3RmFpbHVyZXMpOwotICAgIG1faml0
LmFkZGxfaThyKDQsIFg4NkFzc2VtYmxlcjo6ZXNwKTsKKyAgICBtX2ppdC5hZGRsX2k4cig0LCBY
ODY6OmVzcCk7CiAgICAgbV9qaXQucG9wbF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKICAg
ICAvLyAoMi4yKSBsaW5rIGZhaWx1cmUgY2FzZXMgdG8ganVtcCBiYWNrIHVwIHRvIGFsdGVybmF0
aXZlRmFpbGVkLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXdGYWlsdXJlcy5zaXpl
KCk7ICsraSkKQEAgLTY2MCw3ICs2NjAsNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRl
R3JlZWR5UXVhbnRpCiAgICAgLy8gKDIuMikgcmVjdXJzaXZlbHkgY2FsbCB0byBwYXJzZUFsdGVy
bmF0aXZlLCBpZiBpdCBmYWxscyB0aHJvdWdoLCBzdWNjZXNzIQogICAgIG1faml0LnB1c2hsX3Io
Y3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgIG1fcGFyc2VyLnBhcnNlQWx0ZXJuYXRpdmUo
bmV3RmFpbHVyZXMpOwotICAgIG1faml0LmFkZGxfaThyKDQsIFg4NkFzc2VtYmxlcjo6ZXNwKTsK
KyAgICBtX2ppdC5hZGRsX2k4cig0LCBYODY6OmVzcCk7CiAgICAgbV9qaXQucG9wbF9yKHF1YW50
aWZpZXJDb3VudFJlZ2lzdGVyKTsKICAgICAvLyAoMi4zKSBsaW5rIGZhaWx1cmUgY2FzZXMgdG8g
aGVyZS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbmV3RmFpbHVyZXMuc2l6ZSgpOyAr
K2kpCkBAIC04NzQsNyArODc0LDcgQEAgV1JFQ0dlbmVyYXRvcjo6Sm1wU3JjIFdSRUNHZW5lcmF0
b3I6OmdlbgogICAgICAgICBtX2ppdC5tb3ZsX3JtKGN1cnJlbnRWYWx1ZVJlZ2lzdGVyLCAoMiAq
IHN1YnBhdHRlcm5JZCkgKiBzaXplb2YoaW50KSwgb3V0cHV0UmVnaXN0ZXIpOwogICAgICAgICBt
X2ppdC5tb3ZsX3JtKGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCAoMiAqIHN1YnBhdHRlcm5JZCAr
IDEpICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyKTsKICAgICB9IGVsc2UgaWYgKHR5cGUg
PT0gbm9uX2NhcHR1cmluZykKLSAgICAgICAgbV9qaXQuYWRkbF9pOHIoNCwgWDg2QXNzZW1ibGVy
Ojplc3ApOworICAgICAgICBtX2ppdC5hZGRsX2k4cig0LCBYODY6OmVzcCk7CiAgICAgZWxzZQog
ICAgICAgICBtX2ppdC5wb3BsX3IoY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogCkBAIC0xMDg1
LDcgKzEwODUsNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQmFja3JlZmVyZW5jCiAg
ICAgLy8gU3VjY2VzcwogICAgIG1faml0LmxpbmsoZW5kT2ZCYWNrUmVmLCBtX2ppdC5sYWJlbCgp
KTsKICAgICBtX2ppdC5wb3BsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOwotICAgIG1faml0
LmFkZGxfaThyKDQsIFg4NkFzc2VtYmxlcjo6ZXNwKTsKKyAgICBtX2ppdC5hZGRsX2k4cig0LCBY
ODY6OmVzcCk7CiB9CiAKIHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2VybmVyYXRlRGlzanVuY3Rpb24o
Sm1wU3JjVmVjdG9yJiBzdWNjZXNzZXMsIEptcFNyY1ZlY3RvciYgZmFpbHVyZXMpCkBAIC0xMDk4
LDcgKzEwOTgsNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6Omdlcm5lcmF0ZURpc2p1bmN0aW9uCiAg
ICAgICAgIG1faml0LmxpbmsoZmFpbHVyZXNbaV0sIGhlcmUpOwogICAgIGZhaWx1cmVzLmNsZWFy
KCk7CiAgICAgCi0gICAgbV9qaXQubW92bF9tcihYODZBc3NlbWJsZXI6OmVzcCwgY3VycmVudFBv
c2l0aW9uUmVnaXN0ZXIpOworICAgIG1faml0Lm1vdmxfbXIoWDg2Ojplc3AsIGN1cnJlbnRQb3Np
dGlvblJlZ2lzdGVyKTsKIH0KIAogdm9pZCBXUkVDR2VuZXJhdG9yOjp0ZXJtaW5hdGVEaXNqdW5j
dGlvbihKbXBTcmNWZWN0b3ImIHN1Y2Nlc3NlcykKSW5kZXg6IHdyZWMvV1JFQy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIHdyZWMvV1JFQy5oCShyZXZpc2lvbiAzNjMwMCkKKysrIHdyZWMvV1JFQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NiwxMiArODYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5
cGVkZWYgTWFjcm9Bc3NlbWJsZXI6OkptcERzdCBKbXBEc3Q7CiAKICAgICAgICAgLy8gdGhlc2Ug
cmVncyBzZXR1cCBieSB0aGUgcGFyYW1zCi0gICAgICAgIHN0YXRpYyBjb25zdCBYODZBc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgaW5wdXRSZWdpc3RlciA9IFg4NkFzc2VtYmxlcjo6ZWF4OwotICAgICAg
ICBzdGF0aWMgY29uc3QgWDg2QXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRQb3NpdGlvblJl
Z2lzdGVyID0gWDg2QXNzZW1ibGVyOjplZHg7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBYODZBc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgbGVuZ3RoUmVnaXN0ZXIgPSBYODZBc3NlbWJsZXI6OmVjeDsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IFg4NkFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBjdXJyZW50VmFsdWVS
ZWdpc3RlciA9IFg4NkFzc2VtYmxlcjo6ZXNpOwotICAgICAgICBzdGF0aWMgY29uc3QgWDg2QXNz
ZW1ibGVyOjpSZWdpc3RlcklEIG91dHB1dFJlZ2lzdGVyID0gWDg2QXNzZW1ibGVyOjplZGk7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBYODZBc3NlbWJsZXI6OlJlZ2lzdGVySUQgcXVhbnRpZmllckNv
dW50UmVnaXN0ZXIgPSBYODZBc3NlbWJsZXI6OmVieDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFg4
NkFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBpbnB1dFJlZ2lzdGVyID0gWDg2OjplYXg7CisgICAgICAg
IHN0YXRpYyBjb25zdCBYODZBc3NlbWJsZXI6OlJlZ2lzdGVySUQgY3VycmVudFBvc2l0aW9uUmVn
aXN0ZXIgPSBYODY6OmVkeDsKKyAgICAgICAgc3RhdGljIGNvbnN0IFg4NkFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBsZW5ndGhSZWdpc3RlciA9IFg4Njo6ZWN4OworICAgICAgICBzdGF0aWMgY29uc3Qg
WDg2QXNzZW1ibGVyOjpSZWdpc3RlcklEIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyID0gWDg2Ojplc2k7
CisgICAgICAgIHN0YXRpYyBjb25zdCBYODZBc3NlbWJsZXI6OlJlZ2lzdGVySUQgb3V0cHV0UmVn
aXN0ZXIgPSBYODY6OmVkaTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFg4NkFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBxdWFudGlmaWVyQ291bnRSZWdpc3RlciA9IFg4Njo6ZWJ4OwogCiAgICAgICAgIGZy
aWVuZCBjbGFzcyBHZW5lcmF0ZUF0b21GdW5jdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgR2Vu
ZXJhdGVQYXR0ZXJuQ2hhcmFjdGVyRnVuY3RvcjsK
</data>
<flag name="review"
          id="10382"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>