<?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>151678</bug_id>
          
          <creation_ts>2015-11-30 15:29:34 -0800</creation_ts>
          <short_desc>Refactor the op_add, op_sub, and op_mul snippets to use the SnippetOperand class.</short_desc>
          <delta_ts>2015-11-30 16:08:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1144976</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-11-30 15:29:34 -0800</bug_when>
    <thetext>This makes the code slightly more compact and easier to reason about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144981</commentid>
    <comment_count>1</comment_count>
      <attachid>266290</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-11-30 15:32:39 -0800</bug_when>
    <thetext>Created attachment 266290
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144983</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 15:34:12 -0800</bug_when>
    <thetext>Attachment 266290 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITMulGenerator.h:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITMulGenerator.h:42:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITMulGenerator.h:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.h:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.h:42:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITSubGenerator.h:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITAddGenerator.h:41:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITAddGenerator.h:42:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITAddGenerator.h:43:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 9 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144984</commentid>
    <comment_count>3</comment_count>
      <attachid>266290</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-30 15:34:18 -0800</bug_when>
    <thetext>Comment on attachment 266290
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145011</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-11-30 16:08:54 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r192842: &lt;http://trac.webkit.org/r192842&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266290</attachid>
            <date>2015-11-30 15:32:39 -0800</date>
            <delta_ts>2015-11-30 15:34:18 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-151678.patch</filename>
            <type>text/plain</type>
            <size>26789</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTExLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciB0aGUgb3BfYWRkLCBvcF9zdWIsIGFuZCBvcF9tdWwgc25pcHBldHMgdG8gdXNlIHRo
ZSBTbmlwcGV0T3BlcmFuZCBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tcGlsZS5jcHA6CisgICAgICAgICogaml0L0pJVEFkZEdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aCk6CisgICAgICAgICogaml0
L0pJVEFkZEdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpKSVRBZGRHZW5lcmF0b3I6OkpJVEFk
ZEdlbmVyYXRvcik6CisgICAgICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX211bCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRNdWxH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgpOgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUTXVsR2VuZXJhdG9yOjpKSVRNdWxHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRTdWJHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgpOgorICAgICAgICAqIGppdC9KSVRTdWJHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
SklUU3ViR2VuZXJhdG9yOjpKSVRTdWJHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9TbmlwcGV0
T3BlcmFuZC5oOgorICAgICAgICAoSlNDOjpTbmlwcGV0T3BlcmFuZDo6aXNQb3NpdGl2ZUNvbnN0
SW50MzIpOgorCiAyMDE1LTExLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTbmlwcGVmeSBvcF9kaXYgZm9yIHRoZSBiYXNlbGluZSBKSVQuCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMTkyODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NTMsMzAgKzI4NTMsMjYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZAogICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gZnBy
U2NyYXRjaC5mcHIoKTsKICNlbmRpZgogCi0gICAgUmVzdWx0VHlwZSBsZWZ0VHlwZSA9IG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpOwotICAgIFJlc3VsdFR5cGUg
cmlnaHRUeXBlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCk7
Ci0gICAgaW50MzJfdCBsZWZ0Q29uc3RJbnQzMiA9IDA7Ci0gICAgaW50MzJfdCByaWdodENvbnN0
SW50MzIgPSAwOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5yZXN1bHRUeXBlKCkpOwog
Ci0gICAgQVNTRVJUKCFsZWZ0SXNDb25zdEludDMyIHx8ICFyaWdodElzQ29uc3RJbnQzMik7Cisg
ICAgaWYgKGxlZnRJc0NvbnN0SW50MzIpCisgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50
MzIobm9kZS0+Y2hpbGQxKCktPmFzSW50MzIoKSk7CisgICAgaWYgKHJpZ2h0SXNDb25zdEludDMy
KQorICAgICAgICByaWdodE9wZXJhbmQuc2V0Q29uc3RJbnQzMihub2RlLT5jaGlsZDIoKS0+YXNJ
bnQzMigpKTsKIAotICAgIGlmIChsZWZ0SXNDb25zdEludDMyKSB7Ci0gICAgICAgIGxlZnRDb25z
dEludDMyID0gbm9kZS0+Y2hpbGQxKCktPmFzSW50MzIoKTsKLSAgICAgICAgcmlnaHQgPSBKU1Zh
bHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgIHJpZ2h0UmVncyA9IHJp
Z2h0LT5qc1ZhbHVlUmVncygpOwotICAgIH0gZWxzZSBpZiAocmlnaHRJc0NvbnN0SW50MzIpIHsK
LSAgICAgICAgbGVmdCA9IEpTVmFsdWVPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgbGVmdFJlZ3MgPSBsZWZ0LT5qc1ZhbHVlUmVncygpOwotICAgICAgICByaWdodENvbnN0
SW50MzIgPSBub2RlLT5jaGlsZDIoKS0+YXNJbnQzMigpOwotICAgIH0gZWxzZSB7CisgICAgQVNT
RVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwor
CisgICAgaWYgKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKICAgICAgICAgbGVmdCA9IEpTVmFs
dWVPcGVyYW5kKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgbGVmdFJlZ3MgPSBsZWZ0
LT5qc1ZhbHVlUmVncygpOworICAgIH0KKyAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkp
IHsKICAgICAgICAgcmlnaHQgPSBKU1ZhbHVlT3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgIHJpZ2h0UmVncyA9IHJpZ2h0LT5qc1ZhbHVlUmVncygpOwogICAgIH0KIAotICAg
IEpJVEFkZEdlbmVyYXRvciBnZW4ocmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgbGVm
dFR5cGUsIHJpZ2h0VHlwZSwKLSAgICAgICAgbGVmdElzQ29uc3RJbnQzMiwgcmlnaHRJc0NvbnN0
SW50MzIsIGxlZnRDb25zdEludDMyLCByaWdodENvbnN0SW50MzIsCisgICAgSklUQWRkR2VuZXJh
dG9yIGdlbihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdzLCBsZWZ0UmVncywg
cmlnaHRSZWdzLAogICAgICAgICBsZWZ0RlBSLCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2NyYXRj
aEZQUik7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgobV9qaXQpOwogCkBAIC0zMjE2LDkgKzMy
MTIsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAg
IEpTVmFsdWVSZWdzIGxlZnRSZWdzID0gbGVmdC5qc1ZhbHVlUmVncygpOwogICAgICAgICBKU1Zh
bHVlUmVncyByaWdodFJlZ3MgPSByaWdodC5qc1ZhbHVlUmVncygpOwogCi0gICAgICAgIFJlc3Vs
dFR5cGUgbGVmdFR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5
cGUoKTsKLSAgICAgICAgUmVzdWx0VHlwZSByaWdodFR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKTsKLQogICAgICAgICBGUFJUZW1wb3JhcnkgbGVmdE51
bWJlcih0aGlzKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJpZ2h0TnVtYmVyKHRoaXMpOwogICAg
ICAgICBGUFJSZWcgbGVmdEZQUiA9IGxlZnROdW1iZXIuZnByKCk7CkBAIC0zMjM5LDcgKzMyMzIs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3ViKE5vZAogICAgICAgICBG
UFJSZWcgc2NyYXRjaEZQUiA9IGZwclNjcmF0Y2guZnByKCk7CiAjZW5kaWYKIAotICAgICAgICBK
SVRTdWJHZW5lcmF0b3IgZ2VuKHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIGxlZnRU
eXBlLCByaWdodFR5cGUsCisgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKKyAgICAgICAgU25pcHBl
dE9wZXJhbmQgcmlnaHRPcGVyYW5kKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkucmVz
dWx0VHlwZSgpKTsKKworICAgICAgICBKSVRTdWJHZW5lcmF0b3IgZ2VuKGxlZnRPcGVyYW5kLCBy
aWdodE9wZXJhbmQsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsCiAgICAgICAgICAg
ICBsZWZ0RlBSLCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgIGdl
bi5nZW5lcmF0ZUZhc3RQYXRoKG1faml0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTI4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNiArNDQwLDkg
QEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVBcml0aFN1YklDRmFzdFBhdGgoCiAKICAgICAgICAgQ0Nh
bGxIZWxwZXJzIGZhc3RQYXRoSklUKCZ2bSwgY29kZUJsb2NrKTsKIAorICAgICAgICBTbmlwcGV0
T3BlcmFuZCBsZWZ0T3BlcmFuZChpYy5sZWZ0VHlwZSgpKTsKKyAgICAgICAgU25pcHBldE9wZXJh
bmQgcmlnaHRPcGVyYW5kKGljLnJpZ2h0VHlwZSgpKTsKKwogICAgICAgICBHUFJSZWcgcmVzdWx0
ID0gcmVjb3JkLmxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKTsKICAgICAgICAgR1BSUmVnIGxlZnQg
PSByZWNvcmQubG9jYXRpb25zWzFdLmRpcmVjdEdQUigpOwogICAgICAgICBHUFJSZWcgcmlnaHQg
PSByZWNvcmQubG9jYXRpb25zWzJdLmRpcmVjdEdQUigpOwpAQCAtNDU0LDcgKzQ1Nyw3IEBAIHN0
YXRpYyB2b2lkIGdlbmVyYXRlQXJpdGhTdWJJQ0Zhc3RQYXRoKAogICAgICAgICBGUFJSZWcgcmln
aHRGUFIgPSBhbGxvY2F0b3IuYWxsb2NhdGVTY3JhdGNoRlBSKCk7CiAgICAgICAgIEZQUlJlZyBz
Y3JhdGNoRlBSID0gSW52YWxpZEZQUlJlZzsKIAotICAgICAgICBKSVRTdWJHZW5lcmF0b3IgZ2Vu
KEpTVmFsdWVSZWdzKHJlc3VsdCksIEpTVmFsdWVSZWdzKGxlZnQpLCBKU1ZhbHVlUmVncyhyaWdo
dCksIGljLmxlZnRUeXBlKCksIGljLnJpZ2h0VHlwZSgpLCBsZWZ0RlBSLCByaWdodEZQUiwgc2Ny
YXRjaEdQUiwgc2NyYXRjaEZQUik7CisgICAgICAgIEpJVFN1YkdlbmVyYXRvciBnZW4obGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCwgSlNWYWx1ZVJlZ3MocmVzdWx0KSwgSlNWYWx1ZVJlZ3MobGVm
dCksIEpTVmFsdWVSZWdzKHJpZ2h0KSwgbGVmdEZQUiwgcmlnaHRGUFIsIHNjcmF0Y2hHUFIsIHNj
cmF0Y2hGUFIpOwogCiAgICAgICAgIGF1dG8gbnVtYmVyT2ZCeXRlc1VzZWRUb1ByZXNlcnZlUmV1
c2VkUmVnaXN0ZXJzID0KICAgICAgICAgICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lz
dGVyc0J5UHVzaGluZyhmYXN0UGF0aEpJVCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yOjpFeHRy
YVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFkZEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxOTI4MzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEFkZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDkgKzI0LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSklU
QWRkR2VuZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUoSklUKQotI2luY2x1ZGUgIkpJVEFkZEdlbmVy
YXRvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsMzQgKzQxLDI0IEBAIHZvaWQgSklU
QWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICBBU1NFUlQobV9zY3JhdGNoRlBS
ICE9IEludmFsaWRGUFJSZWcpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoIW1fbGVmdElzQ29uc3RJ
bnQzMiB8fCAhbV9yaWdodElzQ29uc3RJbnQzMik7CisgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5k
LmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAg
Ci0gICAgaWYgKCFtX2xlZnRUeXBlLm1pZ2h0QmVOdW1iZXIoKSB8fCAhbV9yaWdodFR5cGUubWln
aHRCZU51bWJlcigpKSB7CisgICAgaWYgKCFtX2xlZnRPcGVyYW5kLm1pZ2h0QmVOdW1iZXIoKSB8
fCAhbV9yaWdodE9wZXJhbmQubWlnaHRCZU51bWJlcigpKSB7CiAgICAgICAgIEFTU0VSVCghbV9k
aWRFbWl0RmFzdFBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9kaWRFbWl0
RmFzdFBhdGggPSB0cnVlOwogCi0gICAgaWYgKG1fbGVmdElzQ29uc3RJbnQzMiB8fCBtX3JpZ2h0
SXNDb25zdEludDMyKSB7Ci0gICAgICAgIEpTVmFsdWVSZWdzIHZhcjsKLSAgICAgICAgUmVzdWx0
VHlwZSB2YXJUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKTsKLSAgICAgICAgaW50MzJf
dCBjb25zdEludDMyOwotCi0gICAgICAgIGlmIChtX2xlZnRJc0NvbnN0SW50MzIpIHsKLSAgICAg
ICAgICAgIHZhciA9IG1fcmlnaHQ7Ci0gICAgICAgICAgICB2YXJUeXBlID0gbV9yaWdodFR5cGU7
Ci0gICAgICAgICAgICBjb25zdEludDMyID0gbV9sZWZ0Q29uc3RJbnQzMjsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHZhciA9IG1fbGVmdDsKLSAgICAgICAgICAgIHZhclR5cGUgPSBt
X2xlZnRUeXBlOwotICAgICAgICAgICAgY29uc3RJbnQzMiA9IG1fcmlnaHRDb25zdEludDMyOwot
ICAgICAgICB9CisgICAgaWYgKG1fbGVmdE9wZXJhbmQuaXNDb25zdEludDMyKCkgfHwgbV9yaWdo
dE9wZXJhbmQuaXNDb25zdEludDMyKCkpIHsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFyID0gbV9s
ZWZ0T3BlcmFuZC5pc0NvbnN0SW50MzIoKSA/IG1fcmlnaHQgOiBtX2xlZnQ7CisgICAgICAgIFNu
aXBwZXRPcGVyYW5kJiB2YXJPcHIgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9y
aWdodE9wZXJhbmQgOiBtX2xlZnRPcGVyYW5kOworICAgICAgICBTbmlwcGV0T3BlcmFuZCYgY29u
c3RPcHIgPSBtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpID8gbV9sZWZ0T3BlcmFuZCA6IG1f
cmlnaHRPcGVyYW5kOwogCiAgICAgICAgIC8vIFRyeSB0byBkbyBpbnRWYXIgKyBpbnRDb25zdGFu
dC4KICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vdEludDMyID0gaml0LmJyYW5jaElmTm90
SW50MzIodmFyKTsKIAotICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFu
Y2hBZGQzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCB2YXIucGF5bG9hZEdQUigpLCBDQ2FsbEhl
bHBlcnM6OkltbTMyKGNvbnN0SW50MzIpLCBtX3NjcmF0Y2hHUFIpKTsKKyAgICAgICAgbV9zbG93
UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoQWRkMzIoQ0NhbGxIZWxwZXJzOjpPdmVyZmxv
dywgdmFyLnBheWxvYWRHUFIoKSwgQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0
SW50MzIoKSksIG1fc2NyYXRjaEdQUikpOwogCiAgICAgICAgIGppdC5ib3hJbnQzMihtX3NjcmF0
Y2hHUFIsIG1fcmVzdWx0KTsKICAgICAgICAgbV9lbmRKdW1wTGlzdC5hcHBlbmQoaml0Lmp1bXAo
KSk7CkBAIC04MCwxOCArNzAsMTggQEAgdm9pZCBKSVRBZGRHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQwogCiAgICAgICAgIC8vIFRyeSB0byBkbyBkb3VibGVWYXIgKyBkb3VibGUoaW50Q29u
c3RhbnQpLgogICAgICAgICBub3RJbnQzMi5saW5rKCZqaXQpOwotICAgICAgICBpZiAoIXZhclR5
cGUuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgICAgIGlmICghdmFyT3ByLmRlZmluaXRlbHlJ
c051bWJlcigpKQogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJh
bmNoSWZOb3ROdW1iZXIodmFyLCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICBqaXQudW5ib3hE
b3VibGVOb25EZXN0cnVjdGl2ZSh2YXIsIG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSLCBtX3NjcmF0
Y2hGUFIpOwogCi0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RJbnQz
MiksIG1fc2NyYXRjaEdQUik7CisgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6SW1tMzIo
Y29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3NjcmF0Y2hHUFIpOwogICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUobV9zY3JhdGNoR1BSLCBtX3JpZ2h0RlBSKTsKIAogICAgICAgICAv
LyBGYWxsIHRocnUgdG8gZG91YmxlVmFyICsgZG91YmxlVmFyLgogCiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKCFtX2xlZnRJc0NvbnN0SW50MzIgJiYgIW1fcmlnaHRJc0NvbnN0SW50MzIp
OworICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNDb25zdEludDMyKCkgJiYgIW1fcmln
aHRPcGVyYW5kLmlzQ29uc3RJbnQzMigpKTsKICAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIGxl
ZnROb3RJbnQ7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCByaWdodE5vdEludDsKIApAQCAt
MTExLDkgKzEwMSw5IEBAIHZvaWQgSklUQWRkR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMK
ICAgICAgICAgfQogCiAgICAgICAgIGxlZnROb3RJbnQubGluaygmaml0KTsKLSAgICAgICAgaWYg
KCFtX2xlZnRUeXBlLmRlZmluaXRlbHlJc051bWJlcigpKQorICAgICAgICBpZiAoIW1fbGVmdE9w
ZXJhbmQuZGVmaW5pdGVseUlzTnVtYmVyKCkpCiAgICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExp
c3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX2xlZnQsIG1fc2NyYXRjaEdQUikpOwot
ICAgICAgICBpZiAoIW1fcmlnaHRUeXBlLmRlZmluaXRlbHlJc051bWJlcigpKQorICAgICAgICBp
ZiAoIW1fcmlnaHRPcGVyYW5kLmRlZmluaXRlbHlJc051bWJlcigpKQogICAgICAgICAgICAgbV9z
bG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9z
Y3JhdGNoR1BSKSk7CiAKICAgICAgICAgaml0LnVuYm94RG91YmxlTm9uRGVzdHJ1Y3RpdmUobV9s
ZWZ0LCBtX2xlZnRGUFIsIG1fc2NyYXRjaEdQUiwgbV9zY3JhdGNoRlBSKTsKQEAgLTEyMyw3ICsx
MTMsNyBAQCB2b2lkIEpJVEFkZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAgICAg
IENDYWxsSGVscGVyczo6SnVtcCByaWdodFdhc0ludGVnZXIgPSBqaXQuanVtcCgpOwogCiAgICAg
ICAgIHJpZ2h0Tm90SW50LmxpbmsoJmppdCk7Ci0gICAgICAgIGlmICghbV9yaWdodFR5cGUuZGVm
aW5pdGVseUlzTnVtYmVyKCkpCisgICAgICAgIGlmICghbV9yaWdodE9wZXJhbmQuZGVmaW5pdGVs
eUlzTnVtYmVyKCkpCiAgICAgICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5i
cmFuY2hJZk5vdE51bWJlcihtX3JpZ2h0LCBtX3NjcmF0Y2hHUFIpKTsKIAogICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUobV9sZWZ0LnBheWxvYWRHUFIoKSwgbV9sZWZ0RlBSKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQWRkR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3IuaAkocmV2aXNp
b24gMTkyODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBZGRHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMzEgKzI5LDI2IEBACiAjaWYgRU5BQkxFKEpJVCkKIAog
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgotI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIKKyNpbmNs
dWRlICJTbmlwcGV0T3BlcmFuZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSklUQWRk
R2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBKSVRBZGRHZW5lcmF0b3IoSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwKLSAgICAgICAgUmVzdWx0
VHlwZSBsZWZ0VHlwZSwgUmVzdWx0VHlwZSByaWdodFR5cGUsIGJvb2wgbGVmdElzQ29uc3RJbnQz
MiwgYm9vbCByaWdodElzQ29uc3RJbnQzMiwKLSAgICAgICAgaW50MzJfdCBsZWZ0Q29uc3RJbnQz
MiwgaW50MzJfdCByaWdodENvbnN0SW50MzIsIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRG
UFIsCi0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUikKLSAgICAg
ICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgSklUQWRkR2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5k
IGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCisgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCisgICAg
ICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBG
UFJSZWcgc2NyYXRjaEZQUikKKyAgICAgICAgOiBtX2xlZnRPcGVyYW5kKGxlZnRPcGVyYW5kKQor
ICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3BlcmFuZCkKKyAgICAgICAgLCBtX3Jlc3Vs
dChyZXN1bHQpCiAgICAgICAgICwgbV9sZWZ0KGxlZnQpCiAgICAgICAgICwgbV9yaWdodChyaWdo
dCkKLSAgICAgICAgLCBtX2xlZnRUeXBlKGxlZnRUeXBlKQotICAgICAgICAsIG1fcmlnaHRUeXBl
KHJpZ2h0VHlwZSkKLSAgICAgICAgLCBtX2xlZnRJc0NvbnN0SW50MzIobGVmdElzQ29uc3RJbnQz
MikKLSAgICAgICAgLCBtX3JpZ2h0SXNDb25zdEludDMyKHJpZ2h0SXNDb25zdEludDMyKQotICAg
ICAgICAsIG1fbGVmdENvbnN0SW50MzIobGVmdENvbnN0SW50MzIpCi0gICAgICAgICwgbV9yaWdo
dENvbnN0SW50MzIocmlnaHRDb25zdEludDMyKQogICAgICAgICAsIG1fbGVmdEZQUihsZWZ0RlBS
KQogICAgICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpCiAgICAgICAgICwgbV9zY3JhdGNoR1BS
KHNjcmF0Y2hHUFIpCiAgICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpCiAgICAgewot
ICAgICAgICBBU1NFUlQoIWxlZnRJc0NvbnN0SW50MzIgfHwgIXJpZ2h0SXNDb25zdEludDMyKTsK
KyAgICAgICAgQVNTRVJUKCFtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigpIHx8ICFtX3JpZ2h0
T3BlcmFuZC5pc0NvbnN0SW50MzIoKSk7CiAgICAgfQogCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQ
YXRoKENDYWxsSGVscGVycyYpOwpAQCAtNjMsMTUgKzU4LDExIEBAIHB1YmxpYzoKICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0KCkgeyByZXR1cm4gbV9zbG93UGF0
aEp1bXBMaXN0OyB9CiAKIHByaXZhdGU6CisgICAgU25pcHBldE9wZXJhbmQgbV9sZWZ0T3BlcmFu
ZDsKKyAgICBTbmlwcGV0T3BlcmFuZCBtX3JpZ2h0T3BlcmFuZDsKICAgICBKU1ZhbHVlUmVncyBt
X3Jlc3VsdDsKICAgICBKU1ZhbHVlUmVncyBtX2xlZnQ7CiAgICAgSlNWYWx1ZVJlZ3MgbV9yaWdo
dDsKLSAgICBSZXN1bHRUeXBlIG1fbGVmdFR5cGU7Ci0gICAgUmVzdWx0VHlwZSBtX3JpZ2h0VHlw
ZTsKLSAgICBib29sIG1fbGVmdElzQ29uc3RJbnQzMjsKLSAgICBib29sIG1fcmlnaHRJc0NvbnN0
SW50MzI7Ci0gICAgaW50MzJfdCBtX2xlZnRDb25zdEludDMyOwotICAgIGludDMyX3QgbV9yaWdo
dENvbnN0SW50MzI7CiAgICAgRlBSUmVnIG1fbGVmdEZQUjsKICAgICBGUFJSZWcgbV9yaWdodEZQ
UjsKICAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiAxOTI4MzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUs
MjggKzY4NSwyMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAg
ICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBmcFJlZ1QyOwogI2VuZGlmCiAKLSAgICBib29sIGxlZnRJ
c0NvbnN0SW50MzIgPSBpc09wZXJhbmRDb25zdGFudEludChvcDEpOwotICAgIGJvb2wgcmlnaHRJ
c0NvbnN0SW50MzIgPSBpc09wZXJhbmRDb25zdGFudEludChvcDIpOwotICAgIFJlc3VsdFR5cGUg
bGVmdFR5cGUgPSB0eXBlcy5maXJzdCgpOwotICAgIFJlc3VsdFR5cGUgcmlnaHRUeXBlID0gdHlw
ZXMuc2Vjb25kKCk7Ci0gICAgaW50MzJfdCBsZWZ0Q29uc3RJbnQzMiA9IDA7Ci0gICAgaW50MzJf
dCByaWdodENvbnN0SW50MzIgPSAwOworICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKHR5
cGVzLmZpcnN0KCkpOworICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZCh0eXBlcy5zZWNv
bmQoKSk7CiAKLSAgICBBU1NFUlQoIWxlZnRJc0NvbnN0SW50MzIgfHwgIXJpZ2h0SXNDb25zdElu
dDMyKTsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKKyAgICAgICAgbGVmdE9w
ZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSk7CisgICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpCisgICAgICAgIHJpZ2h0T3BlcmFuZC5zZXRDb25z
dEludDMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDIpKTsKIAotICAgIGlmIChsZWZ0SXNDb25z
dEludDMyKSB7Ci0gICAgICAgIGxlZnRDb25zdEludDMyID0gZ2V0T3BlcmFuZENvbnN0YW50SW50
KG9wMSk7Ci0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwot
ICAgIH0gZWxzZSBpZiAocmlnaHRJc0NvbnN0SW50MzIpIHsKLSAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihvcDEsIGxlZnRSZWdzKTsKLSAgICAgICAgcmlnaHRDb25zdEludDMyID0gZ2V0
T3BlcmFuZENvbnN0YW50SW50KG9wMik7Ci0gICAgfSBlbHNlIHsKKyAgICBBU1NFUlQoIWxlZnRP
cGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29uc3QoKSk7CisKKyAgICBpZiAo
IWxlZnRPcGVyYW5kLmlzQ29uc3QoKSkKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihv
cDEsIGxlZnRSZWdzKTsKKyAgICBpZiAoIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpCiAgICAgICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAgIH0KIAotICAgIEpJ
VEFkZEdlbmVyYXRvciBnZW4ocmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywgbGVmdFR5
cGUsIHJpZ2h0VHlwZSwKLSAgICAgICAgbGVmdElzQ29uc3RJbnQzMiwgcmlnaHRJc0NvbnN0SW50
MzIsIGxlZnRDb25zdEludDMyLCByaWdodENvbnN0SW50MzIsCisgICAgSklUQWRkR2VuZXJhdG9y
IGdlbihsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kLCByZXN1bHRSZWdzLCBsZWZ0UmVncywgcmln
aHRSZWdzLAogICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBzY3JhdGNoR1BSLCBzY3JhdGNoRlBS
KTsKIAogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKQEAgLTgyNiwzOCArODIwLDI2
IEBAIHZvaWQgSklUOjplbWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmUKICAgICBGUFJSZWcg
c2NyYXRjaEZQUiA9IGZwUmVnVDI7CiAjZW5kaWYKIAotICAgIGJvb2wgbGVmdElzQ29uc3RJbnQz
MiA9IGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSk7Ci0gICAgYm9vbCByaWdodElzQ29uc3RJbnQz
MiA9IGlzT3BlcmFuZENvbnN0YW50SW50KG9wMik7Ci0gICAgUmVzdWx0VHlwZSBsZWZ0VHlwZSA9
IHR5cGVzLmZpcnN0KCk7Ci0gICAgUmVzdWx0VHlwZSByaWdodFR5cGUgPSB0eXBlcy5zZWNvbmQo
KTsKLSAgICBpbnQzMl90IGxlZnRDb25zdEludDMyID0gMDsKLSAgICBpbnQzMl90IHJpZ2h0Q29u
c3RJbnQzMiA9IDA7Ci0KICAgICB1aW50MzJfdCogcHJvZmlsaW5nQ291bnRlciA9IG51bGxwdHI7
CiAgICAgaWYgKHNob3VsZEVtaXRQcm9maWxpbmcoKSkKICAgICAgICAgcHJvZmlsaW5nQ291bnRl
ciA9ICZtX2NvZGVCbG9jay0+YWRkU3BlY2lhbEZhc3RDYXNlUHJvZmlsZShtX2J5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyOwogCi0gICAgQVNTRVJUKCFsZWZ0SXNDb25zdEludDMyIHx8ICFyaWdo
dElzQ29uc3RJbnQzMik7CisgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQodHlwZXMuZmly
c3QoKSk7CisgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKHR5cGVzLnNlY29uZCgpKTsK
IAotICAgIGlmIChsZWZ0SXNDb25zdEludDMyKQotICAgICAgICBsZWZ0Q29uc3RJbnQzMiA9IGdl
dE9wZXJhbmRDb25zdGFudEludChvcDEpOwotICAgIGlmIChyaWdodElzQ29uc3RJbnQzMikKLSAg
ICAgICAgcmlnaHRDb25zdEludDMyID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMik7CisgICAg
aWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCisgICAgICAgIGxlZnRPcGVyYW5kLnNldENv
bnN0SW50MzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpOworICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEludChvcDIpKQorICAgICAgICByaWdodE9wZXJhbmQuc2V0Q29uc3RJbnQzMihnZXRP
cGVyYW5kQ29uc3RhbnRJbnQob3AyKSk7CiAKLSAgICBib29sIGxlZnRJc1Bvc2l0aXZlQ29uc3RJ
bnQzMiA9IGxlZnRJc0NvbnN0SW50MzIgJiYgKGxlZnRDb25zdEludDMyID4gMCk7Ci0gICAgYm9v
bCByaWdodElzUG9zaXRpdmVDb25zdEludDMyID0gcmlnaHRJc0NvbnN0SW50MzIgJiYgKHJpZ2h0
Q29uc3RJbnQzMiA+IDApOworICAgIEFTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFy
aWdodE9wZXJhbmQuaXNDb25zdCgpKTsKIAotICAgIGlmIChsZWZ0SXNQb3NpdGl2ZUNvbnN0SW50
MzIpCi0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3MpOwotICAg
IGVsc2UgaWYgKHJpZ2h0SXNQb3NpdGl2ZUNvbnN0SW50MzIpCi0gICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVncyk7Ci0gICAgZWxzZSB7CisgICAgaWYgKCFsZWZ0T3Bl
cmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMSwgbGVmdFJlZ3MpOworICAgIGlmICghcmlnaHRPcGVyYW5kLmlzUG9zaXRpdmVDb25z
dEludDMyKCkpCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByaWdodFJlZ3Mp
OwotICAgIH0KIAotICAgIEpJVE11bEdlbmVyYXRvciBnZW4ocmVzdWx0UmVncywgbGVmdFJlZ3Ms
IHJpZ2h0UmVncywgbGVmdFR5cGUsIHJpZ2h0VHlwZSwKLSAgICAgICAgbGVmdElzUG9zaXRpdmVD
b25zdEludDMyLCByaWdodElzUG9zaXRpdmVDb25zdEludDMyLCBsZWZ0Q29uc3RJbnQzMiwgcmln
aHRDb25zdEludDMyLAorICAgIEpJVE11bEdlbmVyYXRvciBnZW4obGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywKICAgICAgICAgZnBSZWdU
MCwgZnBSZWdUMSwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUiwgcHJvZmlsaW5nQ291bnRlcik7CiAK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkBAIC05MDQsMTAgKzg4NiwxMyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9zdWIoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgRlBSUmVnIHNjcmF0
Y2hGUFIgPSBmcFJlZ1QyOwogI2VuZGlmCiAKKyAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFu
ZCh0eXBlcy5maXJzdCgpKTsKKyAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQodHlwZXMu
c2Vjb25kKCkpOworICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBsZWZ0UmVn
cyk7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJpZ2h0UmVncyk7CiAKLSAgICBK
SVRTdWJHZW5lcmF0b3IgZ2VuKHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MsIHR5cGVz
LmZpcnN0KCksIHR5cGVzLnNlY29uZCgpLAorICAgIEpJVFN1YkdlbmVyYXRvciBnZW4obGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncywKICAg
ICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUik7CiAKICAgICBn
ZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE11bEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxOTI4MzYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDkgKzI0LDkgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSklU
TXVsR2VuZXJhdG9yLmgiCiAKICNpZiBFTkFCTEUoSklUKQotI2luY2x1ZGUgIkpJVE11bEdlbmVy
YXRvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsMzQgKzQxLDI0IEBAIHZvaWQgSklU
TXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICBBU1NFUlQobV9zY3JhdGNoRlBS
ICE9IEludmFsaWRGUFJSZWcpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoIW1fbGVmdElzUG9zaXRp
dmVDb25zdEludDMyIHx8ICFtX3JpZ2h0SXNQb3NpdGl2ZUNvbnN0SW50MzIpOwotICAgIAotICAg
IGlmICghbV9sZWZ0VHlwZS5taWdodEJlTnVtYmVyKCkgfHwgIW1fcmlnaHRUeXBlLm1pZ2h0QmVO
dW1iZXIoKSkgeworICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQz
MigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKKworICAgIGlm
ICghbV9sZWZ0T3BlcmFuZC5taWdodEJlTnVtYmVyKCkgfHwgIW1fcmlnaHRPcGVyYW5kLm1pZ2h0
QmVOdW1iZXIoKSkgewogICAgICAgICBBU1NFUlQoIW1fZGlkRW1pdEZhc3RQYXRoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fZGlkRW1pdEZhc3RQYXRoID0gdHJ1ZTsKIAotICAg
IGlmIChtX2xlZnRJc1Bvc2l0aXZlQ29uc3RJbnQzMiB8fCBtX3JpZ2h0SXNQb3NpdGl2ZUNvbnN0
SW50MzIpIHsKLSAgICAgICAgSlNWYWx1ZVJlZ3MgdmFyOwotICAgICAgICBSZXN1bHRUeXBlIHZh
clR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpOwotICAgICAgICBpbnQzMl90IGNvbnN0
SW50MzI7Ci0KLSAgICAgICAgaWYgKG1fbGVmdElzUG9zaXRpdmVDb25zdEludDMyKSB7Ci0gICAg
ICAgICAgICB2YXIgPSBtX3JpZ2h0OwotICAgICAgICAgICAgdmFyVHlwZSA9IG1fcmlnaHRUeXBl
OwotICAgICAgICAgICAgY29uc3RJbnQzMiA9IG1fbGVmdENvbnN0SW50MzI7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICB2YXIgPSBtX2xlZnQ7Ci0gICAgICAgICAgICB2YXJUeXBlID0g
bV9sZWZ0VHlwZTsKLSAgICAgICAgICAgIGNvbnN0SW50MzIgPSBtX3JpZ2h0Q29uc3RJbnQzMjsK
LSAgICAgICAgfQorICAgIGlmIChtX2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkg
fHwgbV9yaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSkgeworICAgICAgICBKU1Zh
bHVlUmVncyB2YXIgPSBtX2xlZnRPcGVyYW5kLmlzUG9zaXRpdmVDb25zdEludDMyKCkgPyBtX3Jp
Z2h0IDogbV9sZWZ0OworICAgICAgICBTbmlwcGV0T3BlcmFuZCYgdmFyT3ByID0gbV9sZWZ0T3Bl
cmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpID8gbV9yaWdodE9wZXJhbmQgOiBtX2xlZnRPcGVy
YW5kOworICAgICAgICBTbmlwcGV0T3BlcmFuZCYgY29uc3RPcHIgPSBtX2xlZnRPcGVyYW5kLmlz
UG9zaXRpdmVDb25zdEludDMyKCkgPyBtX2xlZnRPcGVyYW5kIDogbV9yaWdodE9wZXJhbmQ7CiAK
ICAgICAgICAgLy8gVHJ5IHRvIGRvIGludFZhciAqIGludENvbnN0YW50LgogICAgICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXAgbm90SW50MzIgPSBqaXQuYnJhbmNoSWZOb3RJbnQzMih2YXIpOwogCi0g
ICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaE11bDMyKENDYWxsSGVs
cGVyczo6T3ZlcmZsb3csIHZhci5wYXlsb2FkR1BSKCksIENDYWxsSGVscGVyczo6SW1tMzIoY29u
c3RJbnQzMiksIG1fc2NyYXRjaEdQUikpOworICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBw
ZW5kKGppdC5icmFuY2hNdWwzMihDQ2FsbEhlbHBlcnM6Ok92ZXJmbG93LCB2YXIucGF5bG9hZEdQ
UigpLCBDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigpKSwgbV9zY3Jh
dGNoR1BSKSk7CiAKICAgICAgICAgaml0LmJveEludDMyKG1fc2NyYXRjaEdQUiwgbV9yZXN1bHQp
OwogICAgICAgICBtX2VuZEp1bXBMaXN0LmFwcGVuZChqaXQuanVtcCgpKTsKQEAgLTgwLDE4ICs3
MCwxOCBAQCB2b2lkIEpJVE11bEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAKICAgICAg
ICAgLy8gVHJ5IHRvIGRvIGRvdWJsZVZhciAqIGRvdWJsZShpbnRDb25zdGFudCkuCiAgICAgICAg
IG5vdEludDMyLmxpbmsoJmppdCk7Ci0gICAgICAgIGlmICghdmFyVHlwZS5kZWZpbml0ZWx5SXNO
dW1iZXIoKSkKKyAgICAgICAgaWYgKCF2YXJPcHIuZGVmaW5pdGVseUlzTnVtYmVyKCkpCiAgICAg
ICAgICAgICBtX3Nsb3dQYXRoSnVtcExpc3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcih2
YXIsIG1fc2NyYXRjaEdQUikpOwogCiAgICAgICAgIGppdC51bmJveERvdWJsZU5vbkRlc3RydWN0
aXZlKHZhciwgbV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQUik7CiAKLSAgICAg
ICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdEludDMyKSwgbV9zY3JhdGNoR1BS
KTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0
SW50MzIoKSksIG1fc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJs
ZShtX3NjcmF0Y2hHUFIsIG1fcmlnaHRGUFIpOwogCiAgICAgICAgIC8vIEZhbGwgdGhydSB0byBk
b3VibGVWYXIgKiBkb3VibGVWYXIuCiAKICAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoIW1f
bGVmdElzUG9zaXRpdmVDb25zdEludDMyICYmICFtX3JpZ2h0SXNQb3NpdGl2ZUNvbnN0SW50MzIp
OworICAgICAgICBBU1NFUlQoIW1fbGVmdE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSAm
JiAhbV9yaWdodE9wZXJhbmQuaXNQb3NpdGl2ZUNvbnN0SW50MzIoKSk7CiAKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wIGxlZnROb3RJbnQ7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBy
aWdodE5vdEludDsKQEAgLTEzMCw5ICsxMjAsOSBAQCB2b2lkIEpJVE11bEdlbmVyYXRvcjo6Z2Vu
ZXJhdGVGYXN0UGF0aChDCiAgICAgICAgIH0KIAogICAgICAgICBsZWZ0Tm90SW50LmxpbmsoJmpp
dCk7Ci0gICAgICAgIGlmICghbV9sZWZ0VHlwZS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKKyAgICAg
ICAgaWYgKCFtX2xlZnRPcGVyYW5kLmRlZmluaXRlbHlJc051bWJlcigpKQogICAgICAgICAgICAg
bV9zbG93UGF0aEp1bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9sZWZ0LCBt
X3NjcmF0Y2hHUFIpKTsKLSAgICAgICAgaWYgKCFtX3JpZ2h0VHlwZS5kZWZpbml0ZWx5SXNOdW1i
ZXIoKSkKKyAgICAgICAgaWYgKCFtX3JpZ2h0T3BlcmFuZC5kZWZpbml0ZWx5SXNOdW1iZXIoKSkK
ICAgICAgICAgICAgIG1fc2xvd1BhdGhKdW1wTGlzdC5hcHBlbmQoaml0LmJyYW5jaElmTm90TnVt
YmVyKG1fcmlnaHQsIG1fc2NyYXRjaEdQUikpOwogCiAgICAgICAgIGppdC51bmJveERvdWJsZU5v
bkRlc3RydWN0aXZlKG1fbGVmdCwgbV9sZWZ0RlBSLCBtX3NjcmF0Y2hHUFIsIG1fc2NyYXRjaEZQ
Uik7CkBAIC0xNDIsNyArMTMyLDcgQEAgdm9pZCBKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFz
dFBhdGgoQwogICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgcmlnaHRXYXNJbnRlZ2VyID0gaml0
Lmp1bXAoKTsKIAogICAgICAgICByaWdodE5vdEludC5saW5rKCZqaXQpOwotICAgICAgICBpZiAo
IW1fcmlnaHRUeXBlLmRlZmluaXRlbHlJc051bWJlcigpKQorICAgICAgICBpZiAoIW1fcmlnaHRP
cGVyYW5kLmRlZmluaXRlbHlJc051bWJlcigpKQogICAgICAgICAgICAgbV9zbG93UGF0aEp1bXBM
aXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7
CiAKICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG1fbGVmdC5wYXlsb2FkR1BSKCks
IG1fbGVmdEZQUik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE11bEdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2Vu
ZXJhdG9yLmgJKHJldmlzaW9uIDE5MjgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDMyICsyOSwyNyBAQAogI2lm
IEVOQUJMRShKSVQpCiAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiCisjaW5jbHVkZSAiU25pcHBldE9wZXJhbmQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIEpJVE11bEdlbmVyYXRvciB7CiBwdWJsaWM6Ci0gICAgSklUTXVsR2VuZXJhdG9y
KEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQs
Ci0gICAgICAgIFJlc3VsdFR5cGUgbGVmdFR5cGUsIFJlc3VsdFR5cGUgcmlnaHRUeXBlLCBib29s
IGxlZnRJc1Bvc2l0aXZlQ29uc3RJbnQzMiwgYm9vbCByaWdodElzUG9zaXRpdmVDb25zdEludDMy
LAotICAgICAgICBpbnQzMl90IGxlZnRDb25zdEludDMyLCBpbnQzMl90IHJpZ2h0Q29uc3RJbnQz
MiwgRlBSUmVnIGxlZnRGUFIsIEZQUlJlZyByaWdodEZQUiwKLSAgICAgICAgR1BSUmVnIHNjcmF0
Y2hHUFIsIEZQUlJlZyBzY3JhdGNoRlBSLCB1aW50MzJfdCogcHJvZmlsaW5nQ291bnRlcikKLSAg
ICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgSklUTXVsR2VuZXJhdG9yKFNuaXBwZXRPcGVy
YW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQsCisgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwgSlNWYWx1ZVJlZ3MgcmlnaHQsCisg
ICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsIEdQUlJlZyBzY3JhdGNoR1BS
LCBGUFJSZWcgc2NyYXRjaEZQUiwgdWludDMyX3QqIHByb2ZpbGluZ0NvdW50ZXIpCisgICAgICAg
IDogbV9sZWZ0T3BlcmFuZChsZWZ0T3BlcmFuZCkKKyAgICAgICAgLCBtX3JpZ2h0T3BlcmFuZChy
aWdodE9wZXJhbmQpCisgICAgICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgICAgICAsIG1fbGVm
dChsZWZ0KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCi0gICAgICAgICwgbV9sZWZ0VHlwZShs
ZWZ0VHlwZSkKLSAgICAgICAgLCBtX3JpZ2h0VHlwZShyaWdodFR5cGUpCi0gICAgICAgICwgbV9s
ZWZ0SXNQb3NpdGl2ZUNvbnN0SW50MzIobGVmdElzUG9zaXRpdmVDb25zdEludDMyKQotICAgICAg
ICAsIG1fcmlnaHRJc1Bvc2l0aXZlQ29uc3RJbnQzMihyaWdodElzUG9zaXRpdmVDb25zdEludDMy
KQotICAgICAgICAsIG1fbGVmdENvbnN0SW50MzIobGVmdENvbnN0SW50MzIpCi0gICAgICAgICwg
bV9yaWdodENvbnN0SW50MzIocmlnaHRDb25zdEludDMyKQogICAgICAgICAsIG1fbGVmdEZQUihs
ZWZ0RlBSKQogICAgICAgICAsIG1fcmlnaHRGUFIocmlnaHRGUFIpCiAgICAgICAgICwgbV9zY3Jh
dGNoR1BSKHNjcmF0Y2hHUFIpCiAgICAgICAgICwgbV9zY3JhdGNoRlBSKHNjcmF0Y2hGUFIpCiAg
ICAgICAgICwgbV9wcm9maWxpbmdDb3VudGVyKHByb2ZpbGluZ0NvdW50ZXIpCiAgICAgewotICAg
ICAgICBBU1NFUlQoIWxlZnRJc1Bvc2l0aXZlQ29uc3RJbnQzMiB8fCAhcmlnaHRJc1Bvc2l0aXZl
Q29uc3RJbnQzMik7CisgICAgICAgIEFTU0VSVCghbV9sZWZ0T3BlcmFuZC5pc1Bvc2l0aXZlQ29u
c3RJbnQzMigpIHx8ICFtX3JpZ2h0T3BlcmFuZC5pc1Bvc2l0aXZlQ29uc3RJbnQzMigpKTsKICAg
ICB9CiAKICAgICB2b2lkIGdlbmVyYXRlRmFzdFBhdGgoQ0NhbGxIZWxwZXJzJik7CkBAIC02NCwx
NSArNTksMTEgQEAgcHVibGljOgogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dQYXRo
SnVtcExpc3QoKSB7IHJldHVybiBtX3Nsb3dQYXRoSnVtcExpc3Q7IH0KIAogcHJpdmF0ZToKKyAg
ICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOworICAgIFNuaXBwZXRPcGVyYW5kIG1fcmln
aHRPcGVyYW5kOwogICAgIEpTVmFsdWVSZWdzIG1fcmVzdWx0OwogICAgIEpTVmFsdWVSZWdzIG1f
bGVmdDsKICAgICBKU1ZhbHVlUmVncyBtX3JpZ2h0OwotICAgIFJlc3VsdFR5cGUgbV9sZWZ0VHlw
ZTsKLSAgICBSZXN1bHRUeXBlIG1fcmlnaHRUeXBlOwotICAgIGJvb2wgbV9sZWZ0SXNQb3NpdGl2
ZUNvbnN0SW50MzI7Ci0gICAgYm9vbCBtX3JpZ2h0SXNQb3NpdGl2ZUNvbnN0SW50MzI7Ci0gICAg
aW50MzJfdCBtX2xlZnRDb25zdEludDMyOwotICAgIGludDMyX3QgbV9yaWdodENvbnN0SW50MzI7
CiAgICAgRlBSUmVnIG1fbGVmdEZQUjsKICAgICBGUFJSZWcgbV9yaWdodEZQUjsKICAgICBHUFJS
ZWcgbV9zY3JhdGNoR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJH
ZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3ViR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTkyODM2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdWJHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw5ICsyNCw5
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpJVFN1YkdlbmVyYXRv
ci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKLSNpbmNsdWRlICJKSVRTdWJHZW5lcmF0b3IuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBKSVRTdWJHZW5lcmF0b3I6
OmdlbmVyYXRlRmFzdFBhdGgoQwogICAgIH0KIAogICAgIGxlZnROb3RJbnQubGluaygmaml0KTsK
LSAgICBpZiAoIW1fbGVmdFR5cGUuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgaWYgKCFtX2xl
ZnRPcGVyYW5kLmRlZmluaXRlbHlJc051bWJlcigpKQogICAgICAgICBtX3Nsb3dQYXRoSnVtcExp
c3QuYXBwZW5kKGppdC5icmFuY2hJZk5vdE51bWJlcihtX2xlZnQsIG1fc2NyYXRjaEdQUikpOwot
ICAgIGlmICghbV9yaWdodFR5cGUuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgaWYgKCFtX3Jp
Z2h0T3BlcmFuZC5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKICAgICAgICAgbV9zbG93UGF0aEp1bXBM
aXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BSKSk7
CiAKICAgICBqaXQudW5ib3hEb3VibGVOb25EZXN0cnVjdGl2ZShtX2xlZnQsIG1fbGVmdEZQUiwg
bV9zY3JhdGNoR1BSLCBtX3NjcmF0Y2hGUFIpOwpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEpJVFN1
YkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIHJp
Z2h0V2FzSW50ZWdlciA9IGppdC5qdW1wKCk7CiAKICAgICByaWdodE5vdEludC5saW5rKCZqaXQp
OwotICAgIGlmICghbV9yaWdodFR5cGUuZGVmaW5pdGVseUlzTnVtYmVyKCkpCisgICAgaWYgKCFt
X3JpZ2h0T3BlcmFuZC5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKICAgICAgICAgbV9zbG93UGF0aEp1
bXBMaXN0LmFwcGVuZChqaXQuYnJhbmNoSWZOb3ROdW1iZXIobV9yaWdodCwgbV9zY3JhdGNoR1BS
KSk7CiAKICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUobV9sZWZ0LnBheWxvYWRHUFIoKSwg
bV9sZWZ0RlBSKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3ViR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdWJHZW5l
cmF0b3IuaAkocmV2aXNpb24gMTkyODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdWJHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMjAgKzI5LDIwIEBACiAjaWYg
RU5BQkxFKEpJVCkKIAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgotI2luY2x1ZGUgIlJlc3Vs
dFR5cGUuaCIKKyNpbmNsdWRlICJTbmlwcGV0T3BlcmFuZC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSklUU3ViR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBKSVRTdWJHZW5lcmF0b3Io
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBsZWZ0LCBKU1ZhbHVlUmVncyByaWdodCwK
LSAgICAgICAgUmVzdWx0VHlwZSBsZWZ0VHlwZSwgUmVzdWx0VHlwZSByaWdodFR5cGUsIEZQUlJl
ZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRGUFIsCi0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSLCBG
UFJSZWcgc2NyYXRjaEZQUikKLSAgICAgICAgOiBtX3Jlc3VsdChyZXN1bHQpCisgICAgSklUU3Vi
R2VuZXJhdG9yKFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kLCBTbmlwcGV0T3BlcmFuZCByaWdo
dE9wZXJhbmQsCisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgbGVmdCwg
SlNWYWx1ZVJlZ3MgcmlnaHQsCisgICAgICAgIEZQUlJlZyBsZWZ0RlBSLCBGUFJSZWcgcmlnaHRG
UFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBGUFJSZWcgc2NyYXRjaEZQUikKKyAgICAgICAgOiBtX2xl
ZnRPcGVyYW5kKGxlZnRPcGVyYW5kKQorICAgICAgICAsIG1fcmlnaHRPcGVyYW5kKHJpZ2h0T3Bl
cmFuZCkKKyAgICAgICAgLCBtX3Jlc3VsdChyZXN1bHQpCiAgICAgICAgICwgbV9sZWZ0KGxlZnQp
CiAgICAgICAgICwgbV9yaWdodChyaWdodCkKLSAgICAgICAgLCBtX2xlZnRUeXBlKGxlZnRUeXBl
KQotICAgICAgICAsIG1fcmlnaHRUeXBlKHJpZ2h0VHlwZSkKICAgICAgICAgLCBtX2xlZnRGUFIo
bGVmdEZQUikKICAgICAgICAgLCBtX3JpZ2h0RlBSKHJpZ2h0RlBSKQogICAgICAgICAsIG1fc2Ny
YXRjaEdQUihzY3JhdGNoR1BSKQpAQCAtNTYsMTEgKzU2LDExIEBAIHB1YmxpYzoKICAgICBDQ2Fs
bEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93UGF0aEp1bXBMaXN0KCkgeyByZXR1cm4gbV9zbG93UGF0
aEp1bXBMaXN0OyB9CiAKIHByaXZhdGU6CisgICAgU25pcHBldE9wZXJhbmQgbV9sZWZ0T3BlcmFu
ZDsKKyAgICBTbmlwcGV0T3BlcmFuZCBtX3JpZ2h0T3BlcmFuZDsKICAgICBKU1ZhbHVlUmVncyBt
X3Jlc3VsdDsKICAgICBKU1ZhbHVlUmVncyBtX2xlZnQ7CiAgICAgSlNWYWx1ZVJlZ3MgbV9yaWdo
dDsKLSAgICBSZXN1bHRUeXBlIG1fbGVmdFR5cGU7Ci0gICAgUmVzdWx0VHlwZSBtX3JpZ2h0VHlw
ZTsKICAgICBGUFJSZWcgbV9sZWZ0RlBSOwogICAgIEZQUlJlZyBtX3JpZ2h0RlBSOwogICAgIEdQ
UlJlZyBtX3NjcmF0Y2hHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NuaXBw
ZXRPcGVyYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Tbmlw
cGV0T3BlcmFuZC5oCShyZXZpc2lvbiAxOTI4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NuaXBwZXRPcGVyYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNDb25zdCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAhPSBWYXJpYWJs
ZTsgfQogICAgIGJvb2wgaXNDb25zdEludDMyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENv
bnN0SW50MzI7IH0KICAgICBib29sIGlzQ29uc3REb3VibGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gQ29uc3REb3VibGU7IH0KKyAgICBib29sIGlzUG9zaXRpdmVDb25zdEludDMyKCkgY29u
c3QgeyByZXR1cm4gaXNDb25zdEludDMyKCkgJiYgYXNDb25zdEludDMyKCkgPiAwOyB9CiAKICAg
ICBpbnQ2NF90IGFzUmF3Qml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsLnJhd0JpdHM7IH0KIAo=
</data>
<flag name="review"
          id="291304"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>