<?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>21200</bug_id>
          
          <creation_ts>2008-09-28 11:56:38 -0700</creation_ts>
          <short_desc>Allow direct access to &apos;arguments&apos; without using op_resolve</short_desc>
          <delta_ts>2008-09-28 20:04:34 -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>
          
          <blocked>20813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>darin</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93161</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-28 11:56:38 -0700</bug_when>
    <thetext>Currently, we access &apos;arguments&apos; via op_resolve on the JSActivation. This is a decent performance hit on the V8 Raytrace benchmark. I have a patch to put the arguments object in the callframe and access it directly. This does mean using an extra callframe slot, but a slot will be freed up after fixing bug 21123. Hopefully it won&apos;t be a performance regression in the meantime.

I have a few more little things to fix up with my patch and then I&apos;ll post it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93171</commentid>
    <comment_count>1</comment_count>
      <attachid>23897</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-28 14:30:31 -0700</bug_when>
    <thetext>Created attachment 23897
Patch in progress

Here is a patch in progress. I only perf tested non-CTI, and while SunSpider is fine, the V8 results are bizarre:

TEST              COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:      *1.029x as slow*  5983.8ms +/- 0.2%   6156.1ms +/- 0.1%     significant

=============================================================================

  v8:             *1.029x as slow*  5983.8ms +/- 0.2%   6156.1ms +/- 0.1%     significant
    crypto:       *1.114x as slow*   999.4ms +/- 0.1%   1113.1ms +/- 0.1%     significant
    deltablue:    *1.023x as slow*  1766.6ms +/- 0.1%   1807.7ms +/- 0.1%     significant
    earley-boyer: *1.013x as slow*   678.5ms +/- 0.1%    687.2ms +/- 0.1%     significant
    raytrace:     1.030x as fast     657.6ms +/- 0.1%    638.8ms +/- 0.1%     significant
    richards:     *1.015x as slow*  1881.7ms +/- 0.6%   1909.4ms +/- 0.1%     significant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93189</commentid>
    <comment_count>2</comment_count>
      <attachid>23899</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-28 19:14:45 -0700</bug_when>
    <thetext>Created attachment 23899
Proposed patch

Maciej says he does not see any of the bizarre regressions that I do, so he is ready to review this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93192</commentid>
    <comment_count>3</comment_count>
      <attachid>23899</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-28 19:45:35 -0700</bug_when>
    <thetext>Comment on attachment 23899
Proposed patch

r=me

Some optional comments:

- consider renaming create_arguments to init_arguments (perhaps init should be renamed to enter)

- in the parser, instead of comparing to &quot;arguments&quot; consider comparing to  GOBAL_DATA-&gt;propertyNames.arguments()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93197</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-28 19:59:07 -0700</bug_when>
    <thetext>I sadly duplicated the logic for UString::from(int) and UString::from(double) though fortunately not the actual append logic. Perhaps I should try harder to refactor to make it ot duplicat, though it was not 100% clear how to do this except maybe using a template. UString::from(int) is not much code but the double case is nontrivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93198</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-28 20:00:56 -0700</bug_when>
    <thetext>Oops, that comment was meant for but 21203.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93200</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-28 20:04:34 -0700</bug_when>
    <thetext>Landed in r37050.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23897</attachid>
            <date>2008-09-28 14:30:31 -0700</date>
            <delta_ts>2008-09-28 19:14:45 -0700</delta_ts>
            <desc>Patch in progress</desc>
            <filename>arguments.diff</filename>
            <type>text/plain</type>
            <size>34235</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MDQ1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMDgtMDkt
MjggIENhbWVyb24gIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLmV4cDoKKyAgICAgICAgKiBWTS9DVEkuY3BwOgorICAgICAgICAoSlNDOjpDVEk6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIFZNL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVHZW5lcmF0b3I6OkNvZGVHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpDb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgICogVk0vQ29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpDb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6Cisg
ICAgICAgICogVk0vTWFjaGluZS5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmluaXRpYWxp
emVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpkdW1wUmVnaXN0ZXJzKToKKyAg
ICAgICAgKEpTQzo6TWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpNYWNo
aW5lOjpyZXRyaWV2ZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9j
YWxsX0pTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfb3BfY3JlYXRlX2Fy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9vcF9jb25zdHJ1Y3RfSlNDb25z
dHJ1Y3QpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAgICAgICAgKiBWTS9PcGNvZGUuaDoK
KyAgICAgICAgKiBWTS9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJGaWxl
OjopOgorICAgICAgICAqIGtqcy9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246Om1hcmspOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OmFyZ3VtZW50c0dl
dHRlcik6CisgICAgICAgICoga2pzL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OkpTQWN0aXZhdGlvbkRhdGE6OkpTQWN0aXZhdGlvbkRhdGEpOgorICAgICAgICAq
IGtqcy9Ob2RlSW5mby5oOgorICAgICAgICAqIGtqcy9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI6OmRpZEZpbmlzaFBhcnNpbmcpOgorICAgICAgICAqIGtqcy9QYXJzZXIuaDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAgICoga2pzL2dyYW1tYXIueToKKyAg
ICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OlNjb3BlTm9k
ZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZSk6CisgICAgICAgIChK
U0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6RXZhbE5v
ZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Qm9keU5vZGU6OmNyZWF0ZSk6CisgICAgICAgICoga2pzL25vZGVzLmg6CisgICAgICAgIChKU0M6
OlNjb3BlTm9kZTo6dXNlc0FyZ3VtZW50cyk6CisKIDIwMDgtMDktMjggIFNpbW9uIEhhdXNtYW5u
ICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBIeWF0
dC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDM3MDM4KQorKysgSmF2YVNjcmlwdENvcmUuZXhwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgX19aTjNKU0MxMUpTSW1tZWRpYXRlOHRvT2JqZWN0RVBL
TlNfN0pTVgogX19aTjNKU0MxMUpTSW1tZWRpYXRlOHRvU3RyaW5nRVBLTlNfN0pTVmFsdWVFCiBf
X1pOM0pTQzExSlNJbW1lZGlhdGU5cHJvdG90eXBlRVBLTlNfN0pTVmFsdWVFUE5TXzlFeGVjU3Rh
dGVFCiBfX1pOM0pTQzExUHJvZmlsZU5vZGU0c29ydEVQRmJSS04zV1RGNlJlZlB0cklTMF9FRVM1
X0UKLV9fWk4zSlNDMTFQcm9ncmFtTm9kZTZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRhRVBOU18x
NFNvdXJjZUVsZW1lbnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFpcklOU18xMElkZW50aWZpZXJFakVM
bTE2RUVFUE5TNl9JTlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVjbE5vZGVFRUVMbTE2RUVFUE5TXzE0
U291cmNlUHJvdmlkZXJFYmJpCitfX1pOM0pTQzExUHJvZ3JhbU5vZGU2Y3JlYXRlRVBOU18xMkpT
R2xvYmFsRGF0YUVQTlNfMTRTb3VyY2VFbGVtZW50c0VQTjNXVEY2VmVjdG9ySVN0NHBhaXJJTlNf
MTBJZGVudGlmaWVyRWpFTG0xNkVFRVBOUzZfSU5TNV82UmVmUHRySU5TXzEyRnVuY0RlY2xOb2Rl
RUVFTG0xNkVFRVBOU18xNFNvdXJjZVByb3ZpZGVyRWJiYmkKIF9fWk4zSlNDMTFQcm9wZXJ0eU1h
cDNwdXRFUktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVlRWpiUE5TXzhKU09iamVjdEVSTlNf
MTVQdXRQcm9wZXJ0eVNsb3RFUlBTNV8KIF9fWk4zSlNDMTFQcm9wZXJ0eU1hcDlnZXRPZmZzZXRF
UktOU18xMElkZW50aWZpZXJFUmoKIF9fWk4zSlNDMTFQcm9wZXJ0eU1hcEQxRXYKSW5kZXg6IFZN
L0NUSS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ1RJLmNwcAkocmV2aXNpb24gMzcwMzgpCisrKyBW
TS9DVEkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgwLDYgKzE5ODAsMTEgQEAgdm9pZCBDVEk6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgaSs9IDE7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6IHsK
KyAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9jcmVhdGVfYXJndW1lbnRz
KTsKKyAgICAgICAgICAgIGkgKz0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWRfY2hhaW46CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CkluZGV4OiBWTS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDM3
MDM4KQorKysgVk0vQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDYgKzM1Niwx
MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBwcmludGYoIlslNGRdIGluaXRfYWN0aXZhdGlvblxuIiwgbG9jYXRpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOiB7
CisgICAgICAgICAgICBwcmludGYoIlslNGRdIGNyZWF0ZV9hcmd1bWVudHNcbiIsIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdW5leHBl
Y3RlZF9sb2FkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwpJbmRleDogVk0vQ29kZUdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDM3
MDM4KQorKysgVk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MiwxMSAr
MjkyLDE0IEBAIENvZGVHZW5lcmF0b3I6OkNvZGVHZW5lcmF0b3IoRnVuY3Rpb25Cb2QKICAgICBl
bWl0T3Bjb2RlKG9wX2luaXQpOwogICAgIGNvZGVCbG9jay0+Z2xvYmFsRGF0YSA9IG1fZ2xvYmFs
RGF0YTsKIAorICAgIGJvb2wgdXNlc0FyZ3VtZW50cyA9IGZ1bmN0aW9uQm9keS0+dXNlc0FyZ3Vt
ZW50cygpOworCiAgICAgY29uc3QgTm9kZTo6RnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjayA9
IGZ1bmN0aW9uQm9keS0+ZnVuY3Rpb25TdGFjaygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAgICAgICBGdW5jRGVjbE5vZGUqIGZ1
bmNEZWNsID0gZnVuY3Rpb25TdGFja1tpXS5nZXQoKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBmdW5jRGVjbC0+bV9pZGVudDsKLQorICAgICAgICBpZiAoaWRlbnQgPT0gcHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICAgICAgICAgIHVzZXNBcmd1bWVudHMgPSB0cnVl
OwogICAgICAgICBtX2Z1bmN0aW9ucy5hZGQoaWRlbnQudXN0cmluZygpLnJlcCgpKTsKICAgICAg
ICAgZW1pdE5ld0Z1bmN0aW9uKGFkZFZhcihpZGVudCwgZmFsc2UpLCBmdW5jRGVjbCk7CiAgICAg
fQpAQCAtMzA0LDExICszMDcsMjAgQEAgQ29kZUdlbmVyYXRvcjo6Q29kZUdlbmVyYXRvcihGdW5j
dGlvbkJvZAogICAgIGNvbnN0IE5vZGU6OlZhclN0YWNrJiB2YXJTdGFjayA9IGZ1bmN0aW9uQm9k
eS0+dmFyU3RhY2soKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gdmFyU3RhY2tbaV0u
Zmlyc3Q7Ci0gICAgICAgIGlmIChpZGVudCA9PSBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKQor
ICAgICAgICBpZiAoaWRlbnQgPT0gcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgeworICAgICAg
ICAgICAgdXNlc0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQogICAgICAgICBhZGRWYXIoaWRlbnQsIHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0
aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKICAgICB9CiAKKyAgICBpZiAodXNlc0FyZ3VtZW50cykg
eworICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOworICAgICAgICBtX2Nv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbiA9IHRydWU7CisgICAgICAgIG1fYXJndW1lbnRz
UmVnaXN0ZXIuc2V0SW5kZXgoUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50cyk7
CisgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cy51c3Ry
aW5nKCkucmVwKCksIFN5bWJvbFRhYmxlRW50cnkoUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxl
ZUFyZ3VtZW50cykpOworICAgIH0KKwogICAgIFZlY3RvcjxJZGVudGlmaWVyPiYgcGFyYW1ldGVy
cyA9IGZ1bmN0aW9uQm9keS0+cGFyYW1ldGVycygpOwogICAgIG1fbmV4dFBhcmFtZXRlciA9IC1S
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBwYXJhbWV0ZXJzLnNpemUoKSAtIDE7
CiAgICAgbV9wYXJhbWV0ZXJzLnJlc2l6ZSgxICsgcGFyYW1ldGVycy5zaXplKCkpOyAvLyByZXNl
cnZlIHNwYWNlIGZvciAidGhpcyIKQEAgLTM2Niw5ICszNzgsNiBAQCBSZWdpc3RlcklEKiBDb2Rl
R2VuZXJhdG9yOjphZGRQYXJhbWV0ZXIoCiAKIFJlZ2lzdGVySUQqIENvZGVHZW5lcmF0b3I6OnJl
Z2lzdGVyRm9yKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICAgIGlmIChtX2NvZGVUeXBl
ID09IEZ1bmN0aW9uQ29kZSAmJiBpZGVudCA9PSBwcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKQot
ICAgICAgICBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbiA9IHRydWU7Ci0KICAgICBp
ZiAoaWRlbnQgPT0gcHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKQogICAgICAgICByZXR1
cm4gJm1fdGhpc1JlZ2lzdGVyOwogCkluZGV4OiBWTS9Db2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAzNzAzOCkKKysrIFZNL0NvZGVHZW5l
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgaWYgKGluZGV4ID49IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1f
Y2FsbGVlUmVnaXN0ZXJzW2luZGV4XTsKIAorICAgICAgICAgICAgaWYgKGluZGV4ID09IFJlZ2lz
dGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHMpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fYXJndW1lbnRzUmVnaXN0ZXI7CisKICAgICAgICAgICAgIGlmIChtX3BhcmFtZXRlcnMuc2l6
ZSgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2dsb2JhbHMuc2l6ZSgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzW2luZGV4ICsgbV9wYXJhbWV0ZXJzLnNpemUo
KSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZV07CkBAIC00MTYsNiArNDE5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSGFzaFNldDxSZWZQdHI8VVN0cmluZzo6UmVw
PiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZnVuY3Rpb25zOwogICAgICAgICBSZWdpc3RlcklEIG1f
dGhpc1JlZ2lzdGVyOworICAgICAgICBSZWdpc3RlcklEIG1fYXJndW1lbnRzUmVnaXN0ZXI7CiAg
ICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCA1MTI+IG1fY2FsbGVlUmVnaXN0ZXJz
OwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJRCwgNTEyPiBtX3BhcmFtZXRlcnM7
CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCA1MTI+IG1fZ2xvYmFsczsKSW5k
ZXg6IFZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL01hY2hpbmUuY3BwCShyZXZpc2lv
biAzNzAzOCkKKysrIFZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFjaGluZS5oIgogCisjaW5jbHVk
ZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgpA
QCAtNTIzLDYgKzUyNCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBNYWNoaW5lOjppbml0aWFsaXpl
Q2EKICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XSA9IGFyZ2M7IC8v
IG9yaWdpbmFsIGFyZ3VtZW50IGNvdW50IChmb3IgdGhlIHNha2Ugb2YgdGhlICJhcmd1bWVudHMi
IG9iamVjdCkKICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpDYWxsZWVdID0gZnVuY3Rpb247
CiAgICAgY2FsbEZyYW1lW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXSA9
IG51bGxKU1ZhbHVlOworICAgIGNhbGxGcmFtZVtSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVl
QXJndW1lbnRzXSA9IG51bGxKU1ZhbHVlOwogfQogCiBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyKiBz
bGlkZVJlZ2lzdGVyV2luZG93Rm9yQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgUmVnaXN0ZXIqIHJlZ2lzdGVy
QmFzZSwgUmVnaXN0ZXIqIHIsIHNpemVfdCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ2MsIEpTVmFs
dWUqJiBleGNlcHRpb25WYWx1ZSkKQEAgLTcxNCw2ICs3MTYsNyBAQCB2b2lkIE1hY2hpbmU6OmR1
bXBSZWdpc3RlcnMoY29uc3QgUmVnaXN0CiAgICAgcHJpbnRmKCJbQXJndW1lbnRDb3VudF0gICAg
ICAgICAgICB8ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgqaXQpLnYoKSk7ICsraXQ7CiAgICAgcHJp
bnRmKCJbQ2FsbGVlXSAgICAgICAgICAgICAgICAgICB8ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgq
aXQpLnYoKSk7ICsraXQ7CiAgICAgcHJpbnRmKCJbT3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXSB8
ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgqaXQpLnYoKSk7ICsraXQ7CisgICAgcHJpbnRmKCJbT3B0
aW9uYWxDYWxsZWVBcmd1bWVudHNdICB8ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgqaXQpLnYoKSk7
ICsraXQ7CiAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tXG4iKTsKIAogICAgIGludCByZWdpc3RlckNvdW50ID0gMDsKQEAgLTM0
MDgsNiArMzQxMSwxMiBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRp
CiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09ERTsKICAgICB9CisgICAgQkVHSU5f
T1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHMpIHsKKyAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3Rp
dmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlv
bmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKTsKKyAgICAgICAgcltSZWdpc3RlckZp
bGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFjdGl2YXRpb24tPmNyZWF0ZUFyZ3VtZW50
c09iamVjdChleGVjKTsKKyAgICAgICAgKyt2UEM7CisgICAgICAgIE5FWFRfT1BDT0RFOworICAg
IH0KICAgICBCRUdJTl9PUENPREUob3BfY29uc3RydWN0KSB7CiAgICAgICAgIC8qIGNvbnN0cnVj
dCBkc3QocikgY29uc3RyKHIpIGNvbnN0clByb3RvKHIpIGZpcnN0QXJnKHIpIGFyZ0NvdW50KG4p
IHJlZ2lzdGVyT2Zmc2V0KG4pCiAKQEAgLTM4MjgsMTcgKzM4MzcsMjMgQEAgSlNWYWx1ZSogTWFj
aGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogCiBKU1ZhbHVlKiBNYWNoaW5lOjpyZXRyaWV2
ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uKSBjb25zdAog
ewotICAgIFJlZ2lzdGVyKiBjYWxsRnJhbWUgPSB0aGlzLT5jYWxsRnJhbWUoZXhlYywgZnVuY3Rp
b24pOwotICAgIGlmICghY2FsbEZyYW1lKQorICAgIFJlZ2lzdGVyKiByID0gdGhpcy0+Y2FsbEZy
YW1lKGV4ZWMsIGZ1bmN0aW9uKTsKKyAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybiBqc051bGwo
KTsKIAotICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IHN0YXRpY19jYXN0PEpTQWN0aXZh
dGlvbio+KGNhbGxGcmFtZVtSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0u
anNWYWx1ZShleGVjKSk7Ci0gICAgaWYgKCFhY3RpdmF0aW9uKSB7Ci0gICAgICAgIGFjdGl2YXRp
b24gPSBuZXcgKGV4ZWMpIEpTQWN0aXZhdGlvbihleGVjLCBmdW5jdGlvbi0+bV9ib2R5LCBjYWxs
RnJhbWUpOwotICAgICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFj
dGl2YXRpb25dID0gYWN0aXZhdGlvbjsKKyAgICBBcmd1bWVudHMqIGFyZ3VtZW50cyA9IHN0YXRp
Y19jYXN0PEFyZ3VtZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50
c10uanNWYWx1ZShleGVjKSk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4ocltSZWdpc3Rl
ckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKTsKKyAgICAgICAg
aWYgKCFhY3RpdmF0aW9uKSB7CisgICAgICAgICAgICBhY3RpdmF0aW9uID0gbmV3IChleGVjKSBK
U0FjdGl2YXRpb24oZXhlYywgZnVuY3Rpb24tPm1fYm9keSwgcik7CisgICAgICAgICAgICByW1Jl
Z2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXSA9IGFjdGl2YXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBhcmd1bWVudHMgPSBhY3RpdmF0aW9uLT5jcmVhdGVBcmd1bWVudHNP
YmplY3QoZXhlYyk7CisgICAgICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3Vt
ZW50c10gPSBhcmd1bWVudHM7CiAgICAgfQogCi0gICAgcmV0dXJuIGFjdGl2YXRpb24tPmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKTsKKyAgICByZXR1cm4gYXJndW1l
bnRzOwogfQogCiBKU1ZhbHVlKiBNYWNoaW5lOjpyZXRyaWV2ZUNhbGxlcihFeGVjU3RhdGUqIGV4
ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uKSBjb25zdApAQCAtNDQ2NSw2ICs0NDgwLDcg
QEAgdm9pZCogTWFjaGluZTo6Y3RpX29wX2NhbGxfSlNGdW5jdGlvbihDVAogICAgIHJbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XSA9IGFyZ0NvdW50OyAvLyBvcmlnaW5hbCBhcmd1bWVudCBj
b3VudCAoZm9yIHRoZSBzYWtlIG9mIHRoZSAiYXJndW1lbnRzIiBvYmplY3QpCiAgICAgcltSZWdp
c3RlckZpbGU6OkNhbGxlZV0gPSBmdW5jVmFsOwogICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25h
bENhbGxlZUFjdGl2YXRpb25dID0gbnVsbEpTVmFsdWU7CisgICAgcltSZWdpc3RlckZpbGU6Ok9w
dGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IG51bGxKU1ZhbHVlOwogCiAgICAgZXhlYy0+bV9jYWxs
RnJhbWUgPSByOwogICAgIGV4ZWMtPm1fc2NvcGVDaGFpbiA9IGNhbGxEYXRhU2NvcGVDaGFpbjsK
QEAgLTQ1NDMsNiArNDU1OSwxNCBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpjdGlfb3BfY2FsbF9Ob3RK
U0Z1bmN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgTWFjaGluZTo6Y3RpX29wX2NyZWF0ZV9h
cmd1bWVudHMoQ1RJX0FSR1MpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gQVJHX2V4ZWM7Cisg
ICAgUmVnaXN0ZXIqIHIgPSBBUkdfcjsKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBz
dGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihyW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVB
Y3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCkpOworICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENh
bGxlZUFyZ3VtZW50c10gPSBhY3RpdmF0aW9uLT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhlYyk7
Cit9CisKIHZvaWQgTWFjaGluZTo6Y3RpX29wX3JldF9hY3RpdmF0aW9uKENUSV9BUkdTKQogewog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IEFSR19leGVjOwpAQCAtNDY1Nyw2ICs0NjgxLDcgQEAgdm9p
ZCogTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9KU0NvbnN0cgogICAgIHJbUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50XSA9IGFyZ0NvdW50OyAvLyBvcmlnaW5hbCBhcmd1bWVudCBjb3VudCAo
Zm9yIHRoZSBzYWtlIG9mIHRoZSAiYXJndW1lbnRzIiBvYmplY3QpCiAgICAgcltSZWdpc3RlckZp
bGU6OkNhbGxlZV0gPSBjb25zdHJ1Y3RvcjsKICAgICByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxD
YWxsZWVBY3RpdmF0aW9uXSA9IG51bGxKU1ZhbHVlOworICAgIHJbUmVnaXN0ZXJGaWxlOjpPcHRp
b25hbENhbGxlZUFyZ3VtZW50c10gPSBudWxsSlNWYWx1ZTsKIAogICAgIGV4ZWMtPm1fY2FsbEZy
YW1lID0gcjsKICAgICBleGVjLT5tX3Njb3BlQ2hhaW4gPSBjYWxsRGF0YVNjb3BlQ2hhaW47Cklu
ZGV4OiBWTS9NYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vTWFjaGluZS5oCShyZXZpc2lvbiAz
NzAzOCkKKysrIFZNL01hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29w
X25ld19mdW5jKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxMIGN0aV9v
cF9jYWxsX0pTRnVuY3Rpb24oQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZY
X0NBTEwgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihDVElfQVJHUyk7CisgICAgICAgIHN0YXRp
YyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9jcmVhdGVfYXJndW1lbnRzKENUSV9BUkdTKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3JldF9hY3RpdmF0aW9uKENUSV9BUkdTKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3JldF9wcm9maWxlcihDVElfQVJH
Uyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9yZXRfc2NvcGVDaGFpbihD
VElfQVJHUyk7CkluZGV4OiBWTS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBWTS9PcGNvZGUuaAko
cmV2aXNpb24gMzcwMzgpCisrKyBWTS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAjZGVmaW5lIEZPUl9FQUNIX09QQ09ERV9JRCht
YWNybykgXAogICAgICAgICBtYWNybyhvcF9pbml0KSBcCiAgICAgICAgIG1hY3JvKG9wX2luaXRf
YWN0aXZhdGlvbikgXAorICAgICAgICBtYWNybyhvcF9jcmVhdGVfYXJndW1lbnRzKSBcCiAgICAg
ICAgIFwKICAgICAgICAgbWFjcm8ob3BfdW5leHBlY3RlZF9sb2FkKSBcCiAgICAgICAgIG1hY3Jv
KG9wX25ld19vYmplY3QpIFwKSW5kZXg6IFZNL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFZNL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAzNzAzOCkKKysrIFZNL1JlZ2lzdGVyRmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MCwxNiArOTAsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgUmVnaXN0ZXJGaWxlIDogTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
ZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRyeSB7Ci0gICAgICAgICAgICBDYWxsRnJhbWVIZWFkZXJT
aXplID0gOCwKKyAgICAgICAgICAgIENhbGxGcmFtZUhlYWRlclNpemUgPSA5LAogCi0gICAgICAg
ICAgICBDb2RlQmxvY2sgPSAtOCwKLSAgICAgICAgICAgIENhbGxlclNjb3BlQ2hhaW4gPSAtNywK
LSAgICAgICAgICAgIENhbGxlclJlZ2lzdGVycyA9IC02LAotICAgICAgICAgICAgUmV0dXJuUEMg
PSAtNSwKLSAgICAgICAgICAgIFJldHVyblZhbHVlUmVnaXN0ZXIgPSAtNCwKLSAgICAgICAgICAg
IEFyZ3VtZW50Q291bnQgPSAtMywKLSAgICAgICAgICAgIENhbGxlZSA9IC0yLAotICAgICAgICAg
ICAgT3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uID0gLTEsCisgICAgICAgICAgICBDb2RlQmxvY2sg
PSAtOSwKKyAgICAgICAgICAgIENhbGxlclNjb3BlQ2hhaW4gPSAtOCwKKyAgICAgICAgICAgIENh
bGxlclJlZ2lzdGVycyA9IC03LAorICAgICAgICAgICAgUmV0dXJuUEMgPSAtNiwKKyAgICAgICAg
ICAgIFJldHVyblZhbHVlUmVnaXN0ZXIgPSAtNSwKKyAgICAgICAgICAgIEFyZ3VtZW50Q291bnQg
PSAtNCwKKyAgICAgICAgICAgIENhbGxlZSA9IC0zLAorICAgICAgICAgICAgT3B0aW9uYWxDYWxs
ZWVBY3RpdmF0aW9uID0gLTIsCisgICAgICAgICAgICBPcHRpb25hbENhbGxlZUFyZ3VtZW50cyA9
IC0xLAogICAgICAgICB9OwogCiAgICAgICAgIGVudW0geyBQcm9ncmFtQ29kZVRoaXNSZWdpc3Rl
ciA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gMSB9OwpJbmRleDoga2pzL0pTQWN0aXZhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDM3MDM4KQor
Kysga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDkgKzUyLDYgQEAg
SlNBY3RpdmF0aW9uOjp+SlNBY3RpdmF0aW9uKCkKIHZvaWQgSlNBY3RpdmF0aW9uOjptYXJrKCkK
IHsKICAgICBCYXNlOjptYXJrKCk7Ci0gICAgCi0gICAgaWYgKGQoKS0+YXJndW1lbnRzT2JqZWN0
KQotICAgICAgICBkKCktPmFyZ3VtZW50c09iamVjdC0+bWFyaygpOwogCiAgICAgUmVnaXN0ZXIq
IHJlZ2lzdGVyQXJyYXkgPSBkKCktPnJlZ2lzdGVyQXJyYXkuZ2V0KCk7CiAgICAgaWYgKCFyZWdp
c3RlckFycmF5KQpAQCAtMTYyLDEwICsxNTksMTQgQEAgYm9vbCBKU0FjdGl2YXRpb246OmlzRHlu
YW1pY1Njb3BlKCkgY29ucwogSlNWYWx1ZSogSlNBY3RpdmF0aW9uOjphcmd1bWVudHNHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBz
bG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTQWN0aXZh
dGlvbio+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgaWYgKCF0aGlzT2JqLT5kKCktPmFyZ3VtZW50
c09iamVjdCkKLSAgICAgICAgdGhpc09iai0+ZCgpLT5hcmd1bWVudHNPYmplY3QgPSB0aGlzT2Jq
LT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhlYyk7CiAKLSAgICByZXR1cm4gdGhpc09iai0+ZCgp
LT5hcmd1bWVudHNPYmplY3Q7CisgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBzdGF0aWNfY2Fz
dDxBcmd1bWVudHMqPih0aGlzT2JqLT5kKCktPnJlZ2lzdGVyc1tSZWdpc3RlckZpbGU6Ok9wdGlv
bmFsQ2FsbGVlQXJndW1lbnRzXS5qc1ZhbHVlKGV4ZWMpKTsKKyAgICBpZiAoIWFyZ3VtZW50cykg
eworICAgICAgICBhcmd1bWVudHMgPSB0aGlzT2JqLT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhl
Yyk7CisgICAgICAgIHRoaXNPYmotPmQoKS0+cmVnaXN0ZXJzW1JlZ2lzdGVyRmlsZTo6T3B0aW9u
YWxDYWxsZWVBcmd1bWVudHNdID0gYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiBhcmd1
bWVudHM7CiB9CiAKIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgc2VydmUgdGhlIHB1cnBvc2Ugb2Yg
aXNvbGF0aW5nIHRoZSBjb21tb24gY2FzZSBmcm9tIGEKSW5kZXg6IGtqcy9KU0FjdGl2YXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBranMvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDM3MDM4KQorKysg
a2pzL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMiArODAsMjEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8o
KSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZv
IGluZm87CiAKKyAgICAgICAgTkVWRVJfSU5MSU5FIEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRz
T2JqZWN0KEV4ZWNTdGF0ZSopOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RydWN0IEpTQWN0
aXZhdGlvbkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVjdERhdGEgewogICAgICAgICAgICAg
SlNBY3RpdmF0aW9uRGF0YShQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGZ1bmN0aW9uQm9k
eV8sIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAgICAgICAgICAgOiBKU1ZhcmlhYmxlT2Jq
ZWN0RGF0YSgmZnVuY3Rpb25Cb2R5Xy0+c3ltYm9sVGFibGUoKSwgcmVnaXN0ZXJzKQogICAgICAg
ICAgICAgICAgICwgZnVuY3Rpb25Cb2R5KGZ1bmN0aW9uQm9keV8pCi0gICAgICAgICAgICAgICAg
LCBhcmd1bWVudHNPYmplY3QoMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGZ1bmN0aW9uQm9keTsgLy8gT3ducyB0
aGUgc3ltYm9sIHRhYmxlIGFuZCBjb2RlIGJsb2NrCi0gICAgICAgICAgICBBcmd1bWVudHMqIGFy
Z3VtZW50c09iamVjdDsKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU1Zh
bHVlKiBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmMgZ2V0QXJndW1lbnRzR2V0dGVyKCk7Ci0gICAgICAgIE5FVkVSX0lOTElORSBBcmd1
bWVudHMqIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3RhdGUqKTsKIAogICAgICAgICBKU0Fj
dGl2YXRpb25EYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9u
RGF0YSo+KEpTVmFyaWFibGVPYmplY3Q6OmQpOyB9CiAgICAgfTsKSW5kZXg6IGtqcy9Ob2RlSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIGtqcy9Ob2RlSW5mby5oCShyZXZpc2lvbiAzNzAzOCkKKysrIGtq
cy9Ob2RlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNvbnN0IEZlYXR1cmVJbmZvIEV2YWxGZWF0dXJlID0gMSA8PCAwOwogICAgIGNv
bnN0IEZlYXR1cmVJbmZvIENsb3N1cmVGZWF0dXJlID0gMSA8PCAxOwogICAgIGNvbnN0IEZlYXR1
cmVJbmZvIEFzc2lnbkZlYXR1cmUgPSAxIDw8IDI7CisgICAgY29uc3QgRmVhdHVyZUluZm8gQXJn
dW1lbnRzRmVhdHVyZSA9IDEgPDwgMzsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgTm9kZUZlYXR1cmVJbmZvIHsKICAgICAgICAgVCBtX25vZGU7CkluZGV4OiBranMvUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMzcwMzgpCisrKyBr
anMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgzLDE0IEBAIHZvaWQgUGFy
c2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnMKIH0KIAogdm9pZCBQYXJzZXI6OmRpZEZp
bmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBQYXJzZXJSZWZDb3Vu
dGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+KiB2YXJTdGFjaywgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0
YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVk
c0Nsb3N1cmUsIGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0YW50cykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFBhcnNlclJlZkNvdW50ZWREYXRhPERlY2xhcmF0aW9uU3RhY2tzOjpG
dW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3Vy
ZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbGFzdExpbmUsIGludCBudW1Db25zdGFudHMpCiB7
CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1lbnRzOwogICAgIG1fdmFyRGVjbGFy
YXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gZnVuY1N0YWNrOwog
ICAgIG1fdXNlc0V2YWwgPSB1c2VzRXZhbDsKICAgICBtX25lZWRzQ2xvc3VyZSA9IG5lZWRzQ2xv
c3VyZTsKKyAgICBtX3VzZXNBcmd1bWVudHMgPSB1c2VzQXJndW1lbnRzOwogICAgIG1fbGFzdExp
bmUgPSBsYXN0TGluZTsKICAgICBtX251bUNvbnN0YW50cyA9IG51bUNvbnN0YW50czsKIH0KSW5k
ZXg6IGtqcy9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvUGFyc2VyLmgJKHJldmlzaW9uIDM3
MDM4KQorKysga2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc291cmNlSWQoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZUlkOyB9CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hQYXJzaW5nKFNvdXJjZUVsZW1lbnRz
KiwgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrPiosIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFy
YXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Ns
b3N1cmUsIGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjaz4qLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2Vz
QXJndW1lbnRzLCBpbnQgbGFzdExpbmUsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKQEAgLTcyLDYgKzcyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNs
YXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4gPiBtX2Z1bmNEZWNsYXJhdGlvbnM7CiAgICAg
ICAgIGJvb2wgbV91c2VzRXZhbDsKICAgICAgICAgYm9vbCBtX25lZWRzQ2xvc3VyZTsKKyAgICAg
ICAgYm9vbCBtX3VzZXNBcmd1bWVudHM7CiAgICAgICAgIGludCBtX2xhc3RMaW5lOwogICAgICAg
ICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgfTsKQEAgLTk0LDYgKzk1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXNFdmFsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25lZWRzQ2xvc3VyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV91c2VzQXJndW1l
bnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX251bUNvbnN0YW50cyk7CiAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zID0gMDsKICAgICAg
ICAgbV9mdW5jRGVjbGFyYXRpb25zID0gMDsKSW5kZXg6IGtqcy9ncmFtbWFyLnkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga2pzL2dyYW1tYXIueQkocmV2aXNpb24gMzcwMzgpCisrKyBranMvZ3JhbW1hci55CSh3
b3JraW5nIGNvcHkpCkBAIC0xMDMsMTQgKzEwMywxNCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
Tm9kZURlY2xhcmF0aW9uSW5mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZlYXR1cmVJbmZvIGluZm8sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBudW1Db25zdGFudHMpIAogewotICAgIEFTU0VSVCgoaW5mbyAmIH4oRXZh
bEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUpKSA9PSAwKTsKKyAgICBB
U1NFUlQoKGluZm8gJiB+KEV2YWxGZWF0dXJlIHwgQ2xvc3VyZUZlYXR1cmUgfCBBc3NpZ25GZWF0
dXJlIHwgQXJndW1lbnRzRmVhdHVyZSkpID09IDApOwogICAgIE5vZGVEZWNsYXJhdGlvbkluZm88
VD4gcmVzdWx0ID0ge25vZGUsIHZhckRlY2xzLCBmdW5jRGVjbHMsIGluZm8sIG51bUNvbnN0YW50
c307CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IE5vZGVG
ZWF0dXJlSW5mbzxUPiBjcmVhdGVOb2RlRmVhdHVyZUluZm8oVCBub2RlLCBGZWF0dXJlSW5mbyBp
bmZvLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIEFTU0VSVCgoaW5mbyAmIH4oRXZhbEZlYXR1
cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUpKSA9PSAwKTsKKyAgICBBU1NFUlQo
KGluZm8gJiB+KEV2YWxGZWF0dXJlIHwgQ2xvc3VyZUZlYXR1cmUgfCBBc3NpZ25GZWF0dXJlIHwg
QXJndW1lbnRzRmVhdHVyZSkpID09IDApOwogICAgIE5vZGVGZWF0dXJlSW5mbzxUPiByZXN1bHQg
PSB7bm9kZSwgaW5mbywgbnVtQ29uc3RhbnRzfTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
MzQwLDcgKzM0MCw3IEBAIFByaW1hcnlFeHByTm9CcmFjZToKICAgICBUSElTVE9LRU4gICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9kZUZlYXR1cmVJbmZvPEV4cHJlc3Np
b25Ob2RlKj4obmV3IFRoaXNOb2RlKEdMT0JBTF9EQVRBKSwgMCwgMCk7IH0KICAgfCBMaXRlcmFs
CiAgIHwgQXJyYXlMaXRlcmFsCi0gIHwgSURFTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5ldyBSZXNv
bHZlTm9kZShHTE9CQUxfREFUQSwgKiQxLCBAMS5maXJzdF9jb2x1bW4pLCAwLCAwKTsgfQorICB8
IElERU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBjcmVhdGVOb2RlRmVh
dHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgUmVzb2x2ZU5vZGUoR0xPQkFMX0RBVEEsICok
MSwgQDEuZmlyc3RfY29sdW1uKSwgKCokMSA9PSAiYXJndW1lbnRzIikgPyBBcmd1bWVudHNGZWF0
dXJlIDogMCwgMCk7IH0KICAgfCAnKCcgRXhwciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7
ICQkID0gJDI7IH0KIDsKIApAQCAtMTE3NywxMSArMTE3NywxMSBAQCBGb3JtYWxQYXJhbWV0ZXJM
aXN0OgogOwogCiBGdW5jdGlvbkJvZHk6Ci0gICAgLyogbm90IGluIHNwZWMgKi8gICAgICAgICAg
IHsgJCQgPSBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoR0xPQkFMX0RBVEEsIDAsIDAsIDAsIGZh
bHNlLCBmYWxzZSwgMCk7IH0KKyAgICAvKiBub3QgaW4gc3BlYyAqLyAgICAgICAgICAgeyAkJCA9
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShHTE9CQUxfREFUQSwgMCwgMCwgMCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgMCk7IH0KICAgfCBTb3VyY2VFbGVtZW50cyAgICAgICAgICAgICAgeyAkJCA9
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShHTE9CQUxfREFUQSwgJDEubV9ub2RlLCAkMS5tX3Zh
ckRlY2xhcmF0aW9ucyA/ICYkMS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICQxLm1fZnVuY0RlY2xhcmF0aW9ucyA/ICYkMS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEgOiAw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgRXZhbEZlYXR1cmUpICE9IDAsICgkMS5tX2Zl
YXR1cmVJbmZvICYgQ2xvc3VyZUZlYXR1cmUpICE9IDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEubV9udW1Db25zdGFu
dHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgQXJndW1lbnRzRmVhdHVyZSkgIT0gMCwg
JDEubV9udW1Db25zdGFudHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEFzIGluIG1lcmdlRGVjbGFyYXRpb25MaXN0cygpIHdlIGhhdmUgdG8gcmVmL2RlcmVmIHRvIHNh
ZmVseSBnZXQgcmlkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhl
IGRlY2xhcmF0aW9uIGxpc3RzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkMS5tX3ZhckRlY2xhcmF0aW9ucykgewpAQCAtMTE5NiwxMCArMTE5NiwxMCBAQCBGdW5jdGlv
bkJvZHk6CiA7CiAKIFByb2dyYW06Ci0gICAgLyogbm90IGluIHNwZWMgKi8gICAgICAgICAgICAg
ICAgICAgeyBHTE9CQUxfREFUQS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKG5ldyBTb3VyY2VF
bGVtZW50cyhHTE9CQUxfREFUQSksIDAsIDAsIGZhbHNlLCBmYWxzZSwgQDAubGFzdF9saW5lLCAw
KTsgfQorICAgIC8qIG5vdCBpbiBzcGVjICovICAgICAgICAgICAgICAgICAgIHsgR0xPQkFMX0RB
VEEtPnBhcnNlci0+ZGlkRmluaXNoUGFyc2luZyhuZXcgU291cmNlRWxlbWVudHMoR0xPQkFMX0RB
VEEpLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBAMC5sYXN0X2xpbmUsIDApOyB9CiAgICAg
fCBTb3VyY2VFbGVtZW50cyAgICAgICAgICAgICAgICAgICAgeyBHTE9CQUxfREFUQS0+cGFyc2Vy
LT5kaWRGaW5pc2hQYXJzaW5nKCQxLm1fbm9kZSwgJDEubV92YXJEZWNsYXJhdGlvbnMsICQxLm1f
ZnVuY0RlY2xhcmF0aW9ucywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgRXZhbEZl
YXR1cmUpICE9IDAsICgkMS5tX2ZlYXR1cmVJbmZvICYgQ2xvc3VyZUZlYXR1cmUpICE9IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAxLmxhc3RfbGluZSwgJDEubV9udW1Db25zdGFudHMpOyB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgkMS5tX2ZlYXR1cmVJbmZvICYgQXJndW1lbnRzRmVhdHVyZSkgIT0gMCwgQDEubGFzdF9saW5l
LCAkMS5tX251bUNvbnN0YW50cyk7IH0KIDsKIAogU291cmNlRWxlbWVudHM6CkluZGV4OiBranMv
bm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5jcHAJKHJldmlzaW9uIDM3MDM4KQor
Kysga2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxMiwxMiArMTcxMiwxMyBAQCBS
ZWdpc3RlcklEKiBUcnlOb2RlOjplbWl0Q29kZShDb2RlR2VuZXJhCiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0
YW50cykKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0Fy
Z3VtZW50cywgaW50IG51bUNvbnN0YW50cykKICAgICA6IEJsb2NrTm9kZShnbG9iYWxEYXRhLCBj
aGlsZHJlbikKICAgICAsIG1fc291cmNlVVJMKGdsb2JhbERhdGEtPnBhcnNlci0+c291cmNlVVJM
KCkpCiAgICAgLCBtX3NvdXJjZUlkKGdsb2JhbERhdGEtPnBhcnNlci0+c291cmNlSWQoKSkKICAg
ICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgLCBtX25lZWRzQ2xvc3VyZShuZWVkc0Nsb3N1
cmUpCisgICAgLCBtX3VzZXNBcmd1bWVudHModXNlc0FyZ3VtZW50cykKICAgICAsIG1fbnVtQ29u
c3RhbnRzKG51bUNvbnN0YW50cykKIHsKICAgICBpZiAodmFyU3RhY2spCkBAIC0xNzMwLDIxICsx
NzMxLDIxIEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmEKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLVByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRl
ciwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpCi0g
ICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ss
IHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50cykKK1Byb2dyYW1Ob2RlOjpQcm9n
cmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIFNvdXJjZVBy
b3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUs
IGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShn
bG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgdXNlc0V2YWwsIG5lZWRz
Q2xvc3VyZSwgdXNlc0FyZ3VtZW50cywgbnVtQ29uc3RhbnRzKQogICAgICwgbV9zb3VyY2VQcm92
aWRlcihzb3VyY2VQcm92aWRlcikKIHsKIH0KIAotUHJvZ3JhbU5vZGUqIFByb2dyYW1Ob2RlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92
aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBp
bnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGUqIFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNl
UHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1
bWVudHMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9ncmFtTm9kZShn
bG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIs
IHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBQ
cm9ncmFtTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgc291
cmNlUHJvdmlkZXIsIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNv
bnN0YW50cyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1FdmFsTm9kZTo6RXZhbE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNr
KiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291
cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29u
c3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFjaywg
ZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCBudW1Db25zdGFudHMpCitFdmFsTm9k
ZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9z
dXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5v
ZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBu
ZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cykKICAgICAsIG1fc291cmNl
UHJvdmlkZXIoc291cmNlUHJvdmlkZXIpCiB7CiB9CkBAIC0xNzc1LDE1ICsxNzc2LDE1IEBAIHZv
aWQgRXZhbE5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWluTm8KICAgICBnZW5lcmF0b3IuZ2Vu
ZXJhdGUoKTsKIH0KIAotRXZhbE5vZGUqIEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywg
RnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIs
IGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKQorRXZh
bE5vZGUqIEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJv
b2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpCiB7
Ci0gICAgcmV0dXJuIG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIsIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNv
bnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwg
dmFyU3RhY2ssIGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIsIHVzZXNFdmFsLCBuZWVkc0Nsb3N1
cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLUZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xv
c3VyZSwgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSwgbnVtQ29u
c3RhbnRzKQorRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9z
dXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5v
ZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBu
ZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cykKICAgICAsIG1fcmVmQ291
bnQoMCkKIHsKIH0KQEAgLTE3OTQsMTQgKzE3OTUsMTQgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2Rl
OjptYXJrKCkKICAgICAgICAgbV9jb2RlLT5tYXJrKCk7CiB9CiAKLUZ1bmN0aW9uQm9keU5vZGUq
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3Rh
bnRzKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVk
c0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBy
ZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNr
LCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50cyk7CisgICAg
cmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCB1c2VzQXJndW1lbnRzLCBudW1D
b25zdGFudHMpOwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRl
ciosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKQor
RnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgU291cmNlUHJvdmlkZXIqLCBib29sIHVzZXNFdmFs
LCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRz
KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJl
biwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSwgbnVtQ29uc3Rh
bnRzKTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRy
ZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1
bWVudHMsIG51bUNvbnN0YW50cyk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6Z2VuZXJh
dGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKSW5kZXg6IGtqcy9ub2Rlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5oCShyZXZpc2lvbiAzNzAzOCkKKysrIGtqcy9ub2Rl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTY3LDcgKzIxNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBCbG9ja05vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGlu
dCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2Jh
bERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wg
dXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1D
b25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CiAKICAgICAgICAgaW50IHNvdXJjZUlkKCkgY29uc3Qg
SlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZUlkOyB9CiAgICAgICAgIGNvbnN0IFVTdHJp
bmcmIHNvdXJjZVVSTCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2VVUkw7
IH0KQEAgLTIxNzUsNyArMjE3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICAgICAg
Ym9vbCBuZWVkc0Nsb3N1cmUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzQ2xvc3VyZTsgfQotICAg
ICAgICAKKyAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV91c2Vz
QXJndW1lbnRzOyB9CisKICAgICAgICAgVmFyU3RhY2smIHZhclN0YWNrKCkgeyByZXR1cm4gbV92
YXJTdGFjazsgfQogICAgICAgICBGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0YWNrKCkgeyByZXR1
cm4gbV9mdW5jdGlvblN0YWNrOyB9CiAKQEAgLTIxOTUsMTIgKzIxOTYsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGludCBtX3NvdXJjZUlkOwogICAgICAgICBib29sIG1fdXNlc0V2YWw7
CiAgICAgICAgIGJvb2wgbV9uZWVkc0Nsb3N1cmU7CisgICAgICAgIGJvb2wgbV91c2VzQXJndW1l
bnRzOwogICAgICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgfTsKIAogICAgIGNsYXNzIFBy
b2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUHJvZ3JhbU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwg
Ym9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAg
ICAgIHN0YXRpYyBQcm9ncmFtTm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29u
c3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGJ5dGVD
b2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgIHsK
QEAgLTIyMTAsNyArMjIxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7
CisgICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29sIHVzZXNFdmFsLCBi
b29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRzKSBK
U0NfRkFTVF9DQUxMOwogCiAgICAgICAgIHZvaWQgZ2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2Rl
KikgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwpAQCAtMjIyNSw3
ICsyMjI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsTm9kZSA6IHB1Ymxp
YyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEV2YWxOb2RlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3Rh
Y2sqLCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBp
bnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOworICAgICAgICBzdGF0aWMgRXZhbE5vZGUq
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1
cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsK
IAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBieXRlQ29kZShTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICB7CkBAIC0yMjM1LDcgKzIyMzcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRXZhbE5vZGUo
SlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQg
bnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERh
dGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVBy
b3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3Vt
ZW50cywgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsKIAogICAgICAgICB2b2lkIGdl
bmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
SlNDX0ZBU1RfQ0FMTDsKQEAgLTIyNDcsOCArMjI0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEq
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3Zp
ZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMp
IEpTQ19GQVNUX0NBTEw7Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykgSlND
X0ZBU1RfQ0FMTDsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNv
dXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNl
c0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHND
bG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NB
TEw7CiAKICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+JiBwYXJhbWV0ZXJzKCkgSlNDX0ZBU1Rf
Q0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAgICAgVVN0cmluZyBwYXJhbVN0cmlu
ZygpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CkBAIC0yMjkxLDcgKzIyOTMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0
YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMp
IEpTQ19GQVNUX0NBTEw7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFs
LCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRz
KSBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBnZW5lcmF0ZUNv
ZGUoU2NvcGVDaGFpbk5vZGUqKSBKU0NfRkFTVF9DQUxMOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23899</attachid>
            <date>2008-09-28 19:14:45 -0700</date>
            <delta_ts>2008-09-28 19:45:35 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>arguments.diff</filename>
            <type>text/plain</type>
            <size>34484</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MDQ1
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTcgQEAKKzIwMDgtMDkt
MjggIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIxMjAwOiBBbGxvdyBk
aXJlY3QgYWNjZXNzIHRvICdhcmd1bWVudHMnIHdpdGhvdXQgdXNpbmcgb3BfcmVzb2x2ZQorICAg
ICAgICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjAwPgorCisg
ICAgICAgIEFsbG93IGZhc3QgYWNjZXNzIHRvIHRoZSAnYXJndW1lbnRzJyBvYmplY3QgYnkgYWRk
aW5nIGFuIGV4dHJhIHNsb3QgdG8KKyAgICAgICAgdGhlIGNhbGxmcmFtZSB0byBzdG9yZSBpdC4K
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBWTS9DVEkuY3BwOgor
ICAgICAgICAoSlNDOjpDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIFZN
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAg
ICogVk0vQ29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkNvZGVHZW5lcmF0b3I6OkNv
ZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpDb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZvcik6
CisgICAgICAgICogVk0vQ29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpDb2RlR2VuZXJh
dG9yOjpyZWdpc3RlckZvcik6CisgICAgICAgICogVk0vTWFjaGluZS5jcHA6CisgICAgICAgIChK
U0M6Ok1hY2hpbmU6OmluaXRpYWxpemVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5l
OjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpNYWNoaW5lOjpyZXRyaWV2ZUFyZ3VtZW50cyk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmU6OmN0aV9vcF9jYWxsX0pTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpNYWNo
aW5lOjpjdGlfb3BfY3JlYXRlX2FyZ3VtZW50cyk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0
aV9vcF9jb25zdHJ1Y3RfSlNDb25zdHJ1Y3QpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAg
ICAgICAgKiBWTS9PcGNvZGUuaDoKKyAgICAgICAgKiBWTS9SZWdpc3RlckZpbGUuaDoKKyAgICAg
ICAgKEpTQzo6UmVnaXN0ZXJGaWxlOjopOgorICAgICAgICAqIGtqcy9KU0FjdGl2YXRpb24uY3Bw
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246Om1hcmspOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OmFyZ3VtZW50c0dldHRlcik6CisgICAgICAgICoga2pzL0pTQWN0aXZhdGlvbi5o
OgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OkpTQWN0aXZhdGlvbkRhdGE6OkpTQWN0aXZh
dGlvbkRhdGEpOgorICAgICAgICAqIGtqcy9Ob2RlSW5mby5oOgorICAgICAgICAqIGtqcy9QYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmRpZEZpbmlzaFBhcnNpbmcpOgorICAgICAg
ICAqIGtqcy9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAg
ICoga2pzL2dyYW1tYXIueToKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAgICAgICAoSlND
OjpTY29wZU5vZGU6OlNjb3BlTm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9n
cmFtTm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpFdmFsTm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6CisgICAgICAgICoga2pzL25v
ZGVzLmg6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6dXNlc0FyZ3VtZW50cyk6CisKIDIwMDgt
MDktMjggIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBIeWF0dC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlLmV4cAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS5leHAJKHJldmlzaW9uIDM3MDM4KQorKysgSmF2YVNjcmlw
dENvcmUuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgX19aTjNKU0MxMUpT
SW1tZWRpYXRlOHRvT2JqZWN0RVBLTlNfN0pTVgogX19aTjNKU0MxMUpTSW1tZWRpYXRlOHRvU3Ry
aW5nRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0pTQzExSlNJbW1lZGlhdGU5cHJvdG90eXBlRVBLTlNf
N0pTVmFsdWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0pTQzExUHJvZmlsZU5vZGU0c29ydEVQRmJS
S04zV1RGNlJlZlB0cklTMF9FRVM1X0UKLV9fWk4zSlNDMTFQcm9ncmFtTm9kZTZjcmVhdGVFUE5T
XzEySlNHbG9iYWxEYXRhRVBOU18xNFNvdXJjZUVsZW1lbnRzRVBOM1dURjZWZWN0b3JJU3Q0cGFp
cklOU18xMElkZW50aWZpZXJFakVMbTE2RUVFUE5TNl9JTlM1XzZSZWZQdHJJTlNfMTJGdW5jRGVj
bE5vZGVFRUVMbTE2RUVFUE5TXzE0U291cmNlUHJvdmlkZXJFYmJpCitfX1pOM0pTQzExUHJvZ3Jh
bU5vZGU2Y3JlYXRlRVBOU18xMkpTR2xvYmFsRGF0YUVQTlNfMTRTb3VyY2VFbGVtZW50c0VQTjNX
VEY2VmVjdG9ySVN0NHBhaXJJTlNfMTBJZGVudGlmaWVyRWpFTG0xNkVFRVBOUzZfSU5TNV82UmVm
UHRySU5TXzEyRnVuY0RlY2xOb2RlRUVFTG0xNkVFRVBOU18xNFNvdXJjZVByb3ZpZGVyRWJiYmkK
IF9fWk4zSlNDMTFQcm9wZXJ0eU1hcDNwdXRFUktOU18xMElkZW50aWZpZXJFUE5TXzdKU1ZhbHVl
RWpiUE5TXzhKU09iamVjdEVSTlNfMTVQdXRQcm9wZXJ0eVNsb3RFUlBTNV8KIF9fWk4zSlNDMTFQ
cm9wZXJ0eU1hcDlnZXRPZmZzZXRFUktOU18xMElkZW50aWZpZXJFUmoKIF9fWk4zSlNDMTFQcm9w
ZXJ0eU1hcEQxRXYKSW5kZXg6IFZNL0NUSS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ1RJLmNwcAko
cmV2aXNpb24gMzcwMzgpCisrKyBWTS9DVEkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgwLDYg
KzE5ODAsMTEgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAg
ICAgaSs9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X2NyZWF0ZV9hcmd1bWVudHM6IHsKKyAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0
aV9vcF9jcmVhdGVfYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGkgKz0gMTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfY2hhaW46CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X2dlbmVyaWM6CkluZGV4OiBWTS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZNL0NvZGVC
bG9jay5jcHAJKHJldmlzaW9uIDM3MDM4KQorKysgVk0vQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzU2LDYgKzM1NiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludGYoIlslNGRdIGluaXRfYWN0aXZhdGlvblxuIiwg
bG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9jcmVhdGVfYXJndW1lbnRzOiB7CisgICAgICAgICAgICBwcmludGYoIlslNGRdIGNyZWF0ZV9h
cmd1bWVudHNcbiIsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfdW5leHBlY3RlZF9sb2FkOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBrMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwpJbmRleDogVk0vQ29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDM3MDM4KQorKysgVk0vQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5MiwxMSArMjkyLDE0IEBAIENvZGVHZW5lcmF0b3I6OkNvZGVHZW5lcmF0
b3IoRnVuY3Rpb25Cb2QKICAgICBlbWl0T3Bjb2RlKG9wX2luaXQpOwogICAgIGNvZGVCbG9jay0+
Z2xvYmFsRGF0YSA9IG1fZ2xvYmFsRGF0YTsKIAorICAgIGJvb2wgdXNlc0FyZ3VtZW50cyA9IGZ1
bmN0aW9uQm9keS0+dXNlc0FyZ3VtZW50cygpOworCiAgICAgY29uc3QgTm9kZTo6RnVuY3Rpb25T
dGFjayYgZnVuY3Rpb25TdGFjayA9IGZ1bmN0aW9uQm9keS0+ZnVuY3Rpb25TdGFjaygpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewogICAg
ICAgICBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsID0gZnVuY3Rpb25TdGFja1tpXS5nZXQoKTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBmdW5jRGVjbC0+bV9pZGVudDsKLQorICAg
ICAgICBpZiAoaWRlbnQgPT0gcHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICAgICAgICAg
IHVzZXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAgICBtX2Z1bmN0aW9ucy5hZGQoaWRlbnQudXN0
cmluZygpLnJlcCgpKTsKICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKGFkZFZhcihpZGVudCwgZmFs
c2UpLCBmdW5jRGVjbCk7CiAgICAgfQpAQCAtMzA0LDExICszMDcsMjAgQEAgQ29kZUdlbmVyYXRv
cjo6Q29kZUdlbmVyYXRvcihGdW5jdGlvbkJvZAogICAgIGNvbnN0IE5vZGU6OlZhclN0YWNrJiB2
YXJTdGFjayA9IGZ1bmN0aW9uQm9keS0+dmFyU3RhY2soKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhclN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50ID0gdmFyU3RhY2tbaV0uZmlyc3Q7Ci0gICAgICAgIGlmIChpZGVudCA9PSBwcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzKQorICAgICAgICBpZiAoaWRlbnQgPT0gcHJvcGVydHlOYW1lcygp
LmFyZ3VtZW50cykgeworICAgICAgICAgICAgdXNlc0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBhZGRWYXIoaWRlbnQsIHZhclN0YWNr
W2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KTsKICAgICB9CiAKKyAg
ICBpZiAodXNlc0FyZ3VtZW50cykgeworICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1
bWVudHMpOworICAgICAgICBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbiA9IHRydWU7
CisgICAgICAgIG1fYXJndW1lbnRzUmVnaXN0ZXIuc2V0SW5kZXgoUmVnaXN0ZXJGaWxlOjpPcHRp
b25hbENhbGxlZUFyZ3VtZW50cyk7CisgICAgICAgIHN5bWJvbFRhYmxlLT5hZGQocHJvcGVydHlO
YW1lcygpLmFyZ3VtZW50cy51c3RyaW5nKCkucmVwKCksIFN5bWJvbFRhYmxlRW50cnkoUmVnaXN0
ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50cykpOworICAgIH0KKwogICAgIFZlY3RvcjxJ
ZGVudGlmaWVyPiYgcGFyYW1ldGVycyA9IGZ1bmN0aW9uQm9keS0+cGFyYW1ldGVycygpOwogICAg
IG1fbmV4dFBhcmFtZXRlciA9IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSBw
YXJhbWV0ZXJzLnNpemUoKSAtIDE7CiAgICAgbV9wYXJhbWV0ZXJzLnJlc2l6ZSgxICsgcGFyYW1l
dGVycy5zaXplKCkpOyAvLyByZXNlcnZlIHNwYWNlIGZvciAidGhpcyIKQEAgLTM2Niw5ICszNzgs
NiBAQCBSZWdpc3RlcklEKiBDb2RlR2VuZXJhdG9yOjphZGRQYXJhbWV0ZXIoCiAKIFJlZ2lzdGVy
SUQqIENvZGVHZW5lcmF0b3I6OnJlZ2lzdGVyRm9yKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ewotICAgIGlmIChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiBpZGVudCA9PSBwcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzKQotICAgICAgICBtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbiA9IHRydWU7Ci0KICAgICBpZiAoaWRlbnQgPT0gcHJvcGVydHlOYW1lcygpLnRoaXNJZGVu
dGlmaWVyKQogICAgICAgICByZXR1cm4gJm1fdGhpc1JlZ2lzdGVyOwogCkluZGV4OiBWTS9Db2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0vQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAz
NzAzOCkKKysrIFZNL0NvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4
Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGluZGV4ID49IDApCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1fY2FsbGVlUmVnaXN0ZXJzW2luZGV4XTsKIAorICAgICAgICAg
ICAgaWYgKGluZGV4ID09IFJlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHMpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzUmVnaXN0ZXI7CisKICAgICAgICAgICAg
IGlmIChtX3BhcmFtZXRlcnMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFtX2ds
b2JhbHMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzW2luZGV4
ICsgbV9wYXJhbWV0ZXJzLnNpemUoKSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6
ZV07CkBAIC00MTYsNiArNDE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSGFzaFNl
dDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgSWRlbnRpZmllclJlcEhhc2g+IG1fZnVuY3Rpb25zOwog
ICAgICAgICBSZWdpc3RlcklEIG1fdGhpc1JlZ2lzdGVyOworICAgICAgICBSZWdpc3RlcklEIG1f
YXJndW1lbnRzUmVnaXN0ZXI7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklELCA1
MTI+IG1fY2FsbGVlUmVnaXN0ZXJzOwogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8UmVnaXN0ZXJJ
RCwgNTEyPiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcklE
LCA1MTI+IG1fZ2xvYmFsczsKSW5kZXg6IFZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFZN
L01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNzAzOCkKKysrIFZNL01hY2hpbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
TWFjaGluZS5oIgogCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
ZWJ1Z2dlckNhbGxGcmFtZS5oIgpAQCAtNTIzLDYgKzUyNCw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBNYWNoaW5lOjppbml0aWFsaXplQ2EKICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50XSA9IGFyZ2M7IC8vIG9yaWdpbmFsIGFyZ3VtZW50IGNvdW50IChmb3IgdGhlIHNh
a2Ugb2YgdGhlICJhcmd1bWVudHMiIG9iamVjdCkKICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJGaWxl
OjpDYWxsZWVdID0gZnVuY3Rpb247CiAgICAgY2FsbEZyYW1lW1JlZ2lzdGVyRmlsZTo6T3B0aW9u
YWxDYWxsZWVBY3RpdmF0aW9uXSA9IG51bGxKU1ZhbHVlOworICAgIGNhbGxGcmFtZVtSZWdpc3Rl
ckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IG51bGxKU1ZhbHVlOwogfQogCiBBTFdB
WVNfSU5MSU5FIFJlZ2lzdGVyKiBzbGlkZVJlZ2lzdGVyV2luZG93Rm9yQ2FsbChFeGVjU3RhdGUq
IGV4ZWMsIENvZGVCbG9jayogbmV3Q29kZUJsb2NrLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmls
ZSwgUmVnaXN0ZXIqIHJlZ2lzdGVyQmFzZSwgUmVnaXN0ZXIqIHIsIHNpemVfdCByZWdpc3Rlck9m
ZnNldCwgaW50IGFyZ2MsIEpTVmFsdWUqJiBleGNlcHRpb25WYWx1ZSkKQEAgLTcxNCw2ICs3MTYs
NyBAQCB2b2lkIE1hY2hpbmU6OmR1bXBSZWdpc3RlcnMoY29uc3QgUmVnaXN0CiAgICAgcHJpbnRm
KCJbQXJndW1lbnRDb3VudF0gICAgICAgICAgICB8ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgqaXQp
LnYoKSk7ICsraXQ7CiAgICAgcHJpbnRmKCJbQ2FsbGVlXSAgICAgICAgICAgICAgICAgICB8ICUx
MHAgfCAlMTBwIFxuIiwgaXQsICgqaXQpLnYoKSk7ICsraXQ7CiAgICAgcHJpbnRmKCJbT3B0aW9u
YWxDYWxsZWVBY3RpdmF0aW9uXSB8ICUxMHAgfCAlMTBwIFxuIiwgaXQsICgqaXQpLnYoKSk7ICsr
aXQ7CisgICAgcHJpbnRmKCJbT3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdICB8ICUxMHAgfCAlMTBw
IFxuIiwgaXQsICgqaXQpLnYoKSk7ICsraXQ7CiAgICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAogICAgIGludCByZWdp
c3RlckNvdW50ID0gMDsKQEAgLTM0MDgsNiArMzQxMSwxMiBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpw
cml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09E
RTsKICAgICB9CisgICAgQkVHSU5fT1BDT0RFKG9wX2NyZWF0ZV9hcmd1bWVudHMpIHsKKyAgICAg
ICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4o
cltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0SlNWYWx1ZSgpKTsK
KyAgICAgICAgcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IGFjdGl2
YXRpb24tPmNyZWF0ZUFyZ3VtZW50c09iamVjdChleGVjKTsKKyAgICAgICAgKyt2UEM7CisgICAg
ICAgIE5FWFRfT1BDT0RFOworICAgIH0KICAgICBCRUdJTl9PUENPREUob3BfY29uc3RydWN0KSB7
CiAgICAgICAgIC8qIGNvbnN0cnVjdCBkc3QocikgY29uc3RyKHIpIGNvbnN0clByb3RvKHIpIGZp
cnN0QXJnKHIpIGFyZ0NvdW50KG4pIHJlZ2lzdGVyT2Zmc2V0KG4pCiAKQEAgLTM4MjgsMTcgKzM4
MzcsMjMgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogCiBKU1Zh
bHVlKiBNYWNoaW5lOjpyZXRyaWV2ZUFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uKSBjb25zdAogewotICAgIFJlZ2lzdGVyKiBjYWxsRnJhbWUgPSB0aGlzLT5j
YWxsRnJhbWUoZXhlYywgZnVuY3Rpb24pOwotICAgIGlmICghY2FsbEZyYW1lKQorICAgIFJlZ2lz
dGVyKiByID0gdGhpcy0+Y2FsbEZyYW1lKGV4ZWMsIGZ1bmN0aW9uKTsKKyAgICBpZiAoIXIpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KGNhbGxGcmFtZVtSZWdpc3RlckZpbGU6Ok9wdGlv
bmFsQ2FsbGVlQWN0aXZhdGlvbl0uanNWYWx1ZShleGVjKSk7Ci0gICAgaWYgKCFhY3RpdmF0aW9u
KSB7Ci0gICAgICAgIGFjdGl2YXRpb24gPSBuZXcgKGV4ZWMpIEpTQWN0aXZhdGlvbihleGVjLCBm
dW5jdGlvbi0+bV9ib2R5LCBjYWxsRnJhbWUpOwotICAgICAgICBjYWxsRnJhbWVbUmVnaXN0ZXJG
aWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb25dID0gYWN0aXZhdGlvbjsKKyAgICBBcmd1bWVu
dHMqIGFyZ3VtZW50cyA9IHN0YXRpY19jYXN0PEFyZ3VtZW50cyo+KHJbUmVnaXN0ZXJGaWxlOjpP
cHRpb25hbENhbGxlZUFyZ3VtZW50c10uanNWYWx1ZShleGVjKSk7CisgICAgaWYgKCFhcmd1bWVu
dHMpIHsKKyAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gc3RhdGljX2Nhc3Q8SlNB
Y3RpdmF0aW9uKj4ocltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQWN0aXZhdGlvbl0uZ2V0
SlNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKCFhY3RpdmF0aW9uKSB7CisgICAgICAgICAgICBhY3Rp
dmF0aW9uID0gbmV3IChleGVjKSBKU0FjdGl2YXRpb24oZXhlYywgZnVuY3Rpb24tPm1fYm9keSwg
cik7CisgICAgICAgICAgICByW1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9u
XSA9IGFjdGl2YXRpb247CisgICAgICAgIH0KKworICAgICAgICBhcmd1bWVudHMgPSBhY3RpdmF0
aW9uLT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhlYyk7CisgICAgICAgIHJbUmVnaXN0ZXJGaWxl
OjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBhcmd1bWVudHM7CiAgICAgfQogCi0gICAgcmV0
dXJuIGFjdGl2YXRpb24tPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRz
KTsKKyAgICByZXR1cm4gYXJndW1lbnRzOwogfQogCiBKU1ZhbHVlKiBNYWNoaW5lOjpyZXRyaWV2
ZUNhbGxlcihFeGVjU3RhdGUqIGV4ZWMsIEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uKSBjb25z
dApAQCAtNDQ2NSw2ICs0NDgwLDcgQEAgdm9pZCogTWFjaGluZTo6Y3RpX29wX2NhbGxfSlNGdW5j
dGlvbihDVAogICAgIHJbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XSA9IGFyZ0NvdW50OyAv
LyBvcmlnaW5hbCBhcmd1bWVudCBjb3VudCAoZm9yIHRoZSBzYWtlIG9mIHRoZSAiYXJndW1lbnRz
IiBvYmplY3QpCiAgICAgcltSZWdpc3RlckZpbGU6OkNhbGxlZV0gPSBmdW5jVmFsOwogICAgIHJb
UmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFjdGl2YXRpb25dID0gbnVsbEpTVmFsdWU7Cisg
ICAgcltSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXSA9IG51bGxKU1ZhbHVl
OwogCiAgICAgZXhlYy0+bV9jYWxsRnJhbWUgPSByOwogICAgIGV4ZWMtPm1fc2NvcGVDaGFpbiA9
IGNhbGxEYXRhU2NvcGVDaGFpbjsKQEAgLTQ1NDMsNiArNDU1OSwxNCBAQCBKU1ZhbHVlKiBNYWNo
aW5lOjpjdGlfb3BfY2FsbF9Ob3RKU0Z1bmN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgTWFj
aGluZTo6Y3RpX29wX2NyZWF0ZV9hcmd1bWVudHMoQ1RJX0FSR1MpCit7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gQVJHX2V4ZWM7CisgICAgUmVnaXN0ZXIqIHIgPSBBUkdfcjsKKyAgICBKU0FjdGl2
YXRpb24qIGFjdGl2YXRpb24gPSBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihyW1JlZ2lzdGVy
RmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXS5nZXRKU1ZhbHVlKCkpOworICAgIHJbUmVn
aXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBhY3RpdmF0aW9uLT5jcmVhdGVB
cmd1bWVudHNPYmplY3QoZXhlYyk7Cit9CisKIHZvaWQgTWFjaGluZTo6Y3RpX29wX3JldF9hY3Rp
dmF0aW9uKENUSV9BUkdTKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IEFSR19leGVjOwpAQCAt
NDY1Nyw2ICs0NjgxLDcgQEAgdm9pZCogTWFjaGluZTo6Y3RpX29wX2NvbnN0cnVjdF9KU0NvbnN0
cgogICAgIHJbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XSA9IGFyZ0NvdW50OyAvLyBvcmln
aW5hbCBhcmd1bWVudCBjb3VudCAoZm9yIHRoZSBzYWtlIG9mIHRoZSAiYXJndW1lbnRzIiBvYmpl
Y3QpCiAgICAgcltSZWdpc3RlckZpbGU6OkNhbGxlZV0gPSBjb25zdHJ1Y3RvcjsKICAgICByW1Jl
Z2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uXSA9IG51bGxKU1ZhbHVlOworICAg
IHJbUmVnaXN0ZXJGaWxlOjpPcHRpb25hbENhbGxlZUFyZ3VtZW50c10gPSBudWxsSlNWYWx1ZTsK
IAogICAgIGV4ZWMtPm1fY2FsbEZyYW1lID0gcjsKICAgICBleGVjLT5tX3Njb3BlQ2hhaW4gPSBj
YWxsRGF0YVNjb3BlQ2hhaW47CkluZGV4OiBWTS9NYWNoaW5lLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVk0v
TWFjaGluZS5oCShyZXZpc2lvbiAzNzAzOCkKKysrIFZNL01hY2hpbmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDYgKzE1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNW
YWx1ZSogU0ZYX0NBTEwgY3RpX29wX25ld19mdW5jKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGlj
IHZvaWQqIFNGWF9DQUxMIGN0aV9vcF9jYWxsX0pTRnVuY3Rpb24oQ1RJX0FSR1MpOwogICAgICAg
ICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihDVElf
QVJHUyk7CisgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0aV9vcF9jcmVhdGVfYXJndW1l
bnRzKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29wX3JldF9h
Y3RpdmF0aW9uKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NBTEwgY3RpX29w
X3JldF9wcm9maWxlcihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIFNGWF9DQUxMIGN0
aV9vcF9yZXRfc2NvcGVDaGFpbihDVElfQVJHUyk7CkluZGV4OiBWTS9PcGNvZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBWTS9PcGNvZGUuaAkocmV2aXNpb24gMzcwMzgpCisrKyBWTS9PcGNvZGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAjZGVmaW5l
IEZPUl9FQUNIX09QQ09ERV9JRChtYWNybykgXAogICAgICAgICBtYWNybyhvcF9pbml0KSBcCiAg
ICAgICAgIG1hY3JvKG9wX2luaXRfYWN0aXZhdGlvbikgXAorICAgICAgICBtYWNybyhvcF9jcmVh
dGVfYXJndW1lbnRzKSBcCiAgICAgICAgIFwKICAgICAgICAgbWFjcm8ob3BfdW5leHBlY3RlZF9s
b2FkKSBcCiAgICAgICAgIG1hY3JvKG9wX25ld19vYmplY3QpIFwKSW5kZXg6IFZNL1JlZ2lzdGVy
RmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFZNL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAzNzAzOCkK
KysrIFZNL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxNiArOTAsMTcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIDogTm9uY29weWFibGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDYWxsRnJhbWVIZWFkZXJFbnRyeSB7Ci0gICAgICAg
ICAgICBDYWxsRnJhbWVIZWFkZXJTaXplID0gOCwKKyAgICAgICAgICAgIENhbGxGcmFtZUhlYWRl
clNpemUgPSA5LAogCi0gICAgICAgICAgICBDb2RlQmxvY2sgPSAtOCwKLSAgICAgICAgICAgIENh
bGxlclNjb3BlQ2hhaW4gPSAtNywKLSAgICAgICAgICAgIENhbGxlclJlZ2lzdGVycyA9IC02LAot
ICAgICAgICAgICAgUmV0dXJuUEMgPSAtNSwKLSAgICAgICAgICAgIFJldHVyblZhbHVlUmVnaXN0
ZXIgPSAtNCwKLSAgICAgICAgICAgIEFyZ3VtZW50Q291bnQgPSAtMywKLSAgICAgICAgICAgIENh
bGxlZSA9IC0yLAotICAgICAgICAgICAgT3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uID0gLTEsCisg
ICAgICAgICAgICBDb2RlQmxvY2sgPSAtOSwKKyAgICAgICAgICAgIENhbGxlclNjb3BlQ2hhaW4g
PSAtOCwKKyAgICAgICAgICAgIENhbGxlclJlZ2lzdGVycyA9IC03LAorICAgICAgICAgICAgUmV0
dXJuUEMgPSAtNiwKKyAgICAgICAgICAgIFJldHVyblZhbHVlUmVnaXN0ZXIgPSAtNSwKKyAgICAg
ICAgICAgIEFyZ3VtZW50Q291bnQgPSAtNCwKKyAgICAgICAgICAgIENhbGxlZSA9IC0zLAorICAg
ICAgICAgICAgT3B0aW9uYWxDYWxsZWVBY3RpdmF0aW9uID0gLTIsCisgICAgICAgICAgICBPcHRp
b25hbENhbGxlZUFyZ3VtZW50cyA9IC0xLAogICAgICAgICB9OwogCiAgICAgICAgIGVudW0geyBQ
cm9ncmFtQ29kZVRoaXNSZWdpc3RlciA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gMSB9OwpJbmRl
eDoga2pzL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pTQWN0aXZhdGlvbi5j
cHAJKHJldmlzaW9uIDM3MDM4KQorKysga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDkgKzUyLDYgQEAgSlNBY3RpdmF0aW9uOjp+SlNBY3RpdmF0aW9uKCkKIHZvaWQg
SlNBY3RpdmF0aW9uOjptYXJrKCkKIHsKICAgICBCYXNlOjptYXJrKCk7Ci0gICAgCi0gICAgaWYg
KGQoKS0+YXJndW1lbnRzT2JqZWN0KQotICAgICAgICBkKCktPmFyZ3VtZW50c09iamVjdC0+bWFy
aygpOwogCiAgICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBkKCktPnJlZ2lzdGVyQXJyYXku
Z2V0KCk7CiAgICAgaWYgKCFyZWdpc3RlckFycmF5KQpAQCAtMTYyLDEwICsxNTksMTQgQEAgYm9v
bCBKU0FjdGl2YXRpb246OmlzRHluYW1pY1Njb3BlKCkgY29ucwogSlNWYWx1ZSogSlNBY3RpdmF0
aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIEpTQWN0aXZhdGlvbiogdGhpc09iaiA9
IHN0YXRpY19jYXN0PEpTQWN0aXZhdGlvbio+KHNsb3Quc2xvdEJhc2UoKSk7Ci0gICAgaWYgKCF0
aGlzT2JqLT5kKCktPmFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgdGhpc09iai0+ZCgpLT5hcmd1
bWVudHNPYmplY3QgPSB0aGlzT2JqLT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhlYyk7CiAKLSAg
ICByZXR1cm4gdGhpc09iai0+ZCgpLT5hcmd1bWVudHNPYmplY3Q7CisgICAgQXJndW1lbnRzKiBh
cmd1bWVudHMgPSBzdGF0aWNfY2FzdDxBcmd1bWVudHMqPih0aGlzT2JqLT5kKCktPnJlZ2lzdGVy
c1tSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJndW1lbnRzXS5qc1ZhbHVlKGV4ZWMpKTsK
KyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSB0aGlzT2JqLT5jcmVh
dGVBcmd1bWVudHNPYmplY3QoZXhlYyk7CisgICAgICAgIHRoaXNPYmotPmQoKS0+cmVnaXN0ZXJz
W1JlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHNdID0gYXJndW1lbnRzOworICAg
IH0KKworICAgIHJldHVybiBhcmd1bWVudHM7CiB9CiAKIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMg
c2VydmUgdGhlIHB1cnBvc2Ugb2YgaXNvbGF0aW5nIHRoZSBjb21tb24gY2FzZSBmcm9tIGEKSW5k
ZXg6IGtqcy9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvSlNBY3RpdmF0aW9uLmgJ
KHJldmlzaW9uIDM3MDM4KQorKysga2pzL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC04MCwyMiArODAsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgY29uc3Qg
Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKKyAgICAgICAgTkVWRVJfSU5MSU5FIEFyZ3Vt
ZW50cyogY3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSopOworCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgc3RydWN0IEpTQWN0aXZhdGlvbkRhdGEgOiBwdWJsaWMgSlNWYXJpYWJsZU9iamVj
dERhdGEgewogICAgICAgICAgICAgSlNBY3RpdmF0aW9uRGF0YShQYXNzUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IGZ1bmN0aW9uQm9keV8sIFJlZ2lzdGVyKiByZWdpc3RlcnMpCiAgICAgICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0RGF0YSgmZnVuY3Rpb25Cb2R5Xy0+c3ltYm9sVGFibGUo
KSwgcmVnaXN0ZXJzKQogICAgICAgICAgICAgICAgICwgZnVuY3Rpb25Cb2R5KGZ1bmN0aW9uQm9k
eV8pCi0gICAgICAgICAgICAgICAgLCBhcmd1bWVudHNPYmplY3QoMCkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGZ1
bmN0aW9uQm9keTsgLy8gT3ducyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBjb2RlIGJsb2NrCi0gICAg
ICAgICAgICBBcmd1bWVudHMqIGFyZ3VtZW50c09iamVjdDsKICAgICAgICAgfTsKICAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBORVZFUl9JTkxJ
TkUgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0QXJndW1lbnRzR2V0dGVyKCk7Ci0gICAg
ICAgIE5FVkVSX0lOTElORSBBcmd1bWVudHMqIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3Rh
dGUqKTsKIAogICAgICAgICBKU0FjdGl2YXRpb25EYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNBY3RpdmF0aW9uRGF0YSo+KEpTVmFyaWFibGVPYmplY3Q6OmQpOyB9CiAgICAg
fTsKSW5kZXg6IGtqcy9Ob2RlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9Ob2RlSW5mby5oCShy
ZXZpc2lvbiAzNzAzOCkKKysrIGtqcy9Ob2RlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNvbnN0IEZlYXR1cmVJbmZvIEV2YWxGZWF0
dXJlID0gMSA8PCAwOwogICAgIGNvbnN0IEZlYXR1cmVJbmZvIENsb3N1cmVGZWF0dXJlID0gMSA8
PCAxOwogICAgIGNvbnN0IEZlYXR1cmVJbmZvIEFzc2lnbkZlYXR1cmUgPSAxIDw8IDI7CisgICAg
Y29uc3QgRmVhdHVyZUluZm8gQXJndW1lbnRzRmVhdHVyZSA9IDEgPDwgMzsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgTm9kZUZlYXR1cmVJbmZvIHsKICAgICAgICAgVCBtX25v
ZGU7CkluZGV4OiBranMvUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMvUGFyc2VyLmNwcAko
cmV2aXNpb24gMzcwMzgpCisrKyBranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMs
MTMgKzgzLDE0IEBAIHZvaWQgUGFyc2VyOjpwYXJzZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnMKIH0K
IAogdm9pZCBQYXJzZXI6OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVs
ZW1lbnRzLCBQYXJzZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2s+
KiB2YXJTdGFjaywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJSZWZDb3Vu
dGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qIGZ1bmNTdGFjaywgYm9v
bCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0
YW50cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlclJlZkNvdW50ZWREYXRh
PERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrPiogZnVuY1N0YWNrLCBib29sIHVzZXNF
dmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbGFzdExpbmUs
IGludCBudW1Db25zdGFudHMpCiB7CiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IHNvdXJjZUVsZW1l
bnRzOwogICAgIG1fdmFyRGVjbGFyYXRpb25zID0gdmFyU3RhY2s7CiAgICAgbV9mdW5jRGVjbGFy
YXRpb25zID0gZnVuY1N0YWNrOwogICAgIG1fdXNlc0V2YWwgPSB1c2VzRXZhbDsKICAgICBtX25l
ZWRzQ2xvc3VyZSA9IG5lZWRzQ2xvc3VyZTsKKyAgICBtX3VzZXNBcmd1bWVudHMgPSB1c2VzQXJn
dW1lbnRzOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKICAgICBtX251bUNvbnN0YW50cyA9
IG51bUNvbnN0YW50czsKIH0KSW5kZXg6IGtqcy9QYXJzZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBranMv
UGFyc2VyLmgJKHJldmlzaW9uIDM3MDM4KQorKysga2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw3ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgc291cmNlSWQo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlkOyB9CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hQ
YXJzaW5nKFNvdXJjZUVsZW1lbnRzKiwgUGFyc2VyUmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrPiosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2Vy
UmVmQ291bnRlZERhdGE8RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2s+KiwgYm9vbCB1
c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBsYXN0TGluZSwgaW50IG51bUNvbnN0YW50
cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZXJSZWZDb3VudGVkRGF0YTxE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4qLCBib29sIHVzZXNFdmFsLCBib29sIG5l
ZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRzLCBpbnQgbGFzdExpbmUsIGludCBudW1Db25z
dGFudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0
YTsKQEAgLTcyLDYgKzcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxQYXJz
ZXJSZWZDb3VudGVkRGF0YTxEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjaz4gPiBtX2Z1
bmNEZWNsYXJhdGlvbnM7CiAgICAgICAgIGJvb2wgbV91c2VzRXZhbDsKICAgICAgICAgYm9vbCBt
X25lZWRzQ2xvc3VyZTsKKyAgICAgICAgYm9vbCBtX3VzZXNBcmd1bWVudHM7CiAgICAgICAgIGlu
dCBtX2xhc3RMaW5lOwogICAgICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAgICAgfTsKQEAgLTk0
LDYgKzk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVByb3ZpZGVyLmdldCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3VzZXNFdmFsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25l
ZWRzQ2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV91c2VzQXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX251bUNvbnN0YW50cyk7CiAgICAgICAgIG1fdmFyRGVj
bGFyYXRpb25zID0gMDsKICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID0gMDsKSW5kZXg6IGtq
cy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL2dyYW1tYXIueQkocmV2aXNpb24gMzcwMzgp
CisrKyBranMvZ3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTQgKzEwMywxNCBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTm9kZURlY2xhcmF0aW9uSW5mCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZl
YXR1cmVJbmZvIGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1Db25zdGFudHMpIAogewotICAg
IEFTU0VSVCgoaW5mbyAmIH4oRXZhbEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZl
YXR1cmUpKSA9PSAwKTsKKyAgICBBU1NFUlQoKGluZm8gJiB+KEV2YWxGZWF0dXJlIHwgQ2xvc3Vy
ZUZlYXR1cmUgfCBBc3NpZ25GZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSkpID09IDApOwogICAg
IE5vZGVEZWNsYXJhdGlvbkluZm88VD4gcmVzdWx0ID0ge25vZGUsIHZhckRlY2xzLCBmdW5jRGVj
bHMsIGluZm8sIG51bUNvbnN0YW50c307CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IE5vZGVGZWF0dXJlSW5mbzxUPiBjcmVhdGVOb2RlRmVhdHVyZUluZm8o
VCBub2RlLCBGZWF0dXJlSW5mbyBpbmZvLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIEFTU0VS
VCgoaW5mbyAmIH4oRXZhbEZlYXR1cmUgfCBDbG9zdXJlRmVhdHVyZSB8IEFzc2lnbkZlYXR1cmUp
KSA9PSAwKTsKKyAgICBBU1NFUlQoKGluZm8gJiB+KEV2YWxGZWF0dXJlIHwgQ2xvc3VyZUZlYXR1
cmUgfCBBc3NpZ25GZWF0dXJlIHwgQXJndW1lbnRzRmVhdHVyZSkpID09IDApOwogICAgIE5vZGVG
ZWF0dXJlSW5mbzxUPiByZXN1bHQgPSB7bm9kZSwgaW5mbywgbnVtQ29uc3RhbnRzfTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMzQwLDcgKzM0MCw3IEBAIFByaW1hcnlFeHByTm9CcmFjZToK
ICAgICBUSElTVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gY3JlYXRlTm9k
ZUZlYXR1cmVJbmZvPEV4cHJlc3Npb25Ob2RlKj4obmV3IFRoaXNOb2RlKEdMT0JBTF9EQVRBKSwg
MCwgMCk7IH0KICAgfCBMaXRlcmFsCiAgIHwgQXJyYXlMaXRlcmFsCi0gIHwgSURFTlQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IGNyZWF0ZU5vZGVGZWF0dXJlSW5mbzxFeHBy
ZXNzaW9uTm9kZSo+KG5ldyBSZXNvbHZlTm9kZShHTE9CQUxfREFUQSwgKiQxLCBAMS5maXJzdF9j
b2x1bW4pLCAwLCAwKTsgfQorICB8IElERU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsgJCQgPSBjcmVhdGVOb2RlRmVhdHVyZUluZm88RXhwcmVzc2lvbk5vZGUqPihuZXcgUmVzb2x2
ZU5vZGUoR0xPQkFMX0RBVEEsICokMSwgQDEuZmlyc3RfY29sdW1uKSwgKCokMSA9PSAiYXJndW1l
bnRzIikgPyBBcmd1bWVudHNGZWF0dXJlIDogMCwgMCk7IH0KICAgfCAnKCcgRXhwciAnKScgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gJDI7IH0KIDsKIApAQCAtMTE3NywxMSArMTE3Nywx
MSBAQCBGb3JtYWxQYXJhbWV0ZXJMaXN0OgogOwogCiBGdW5jdGlvbkJvZHk6Ci0gICAgLyogbm90
IGluIHNwZWMgKi8gICAgICAgICAgIHsgJCQgPSBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoR0xP
QkFMX0RBVEEsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgMCk7IH0KKyAgICAvKiBub3QgaW4gc3Bl
YyAqLyAgICAgICAgICAgeyAkJCA9IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShHTE9CQUxfREFU
QSwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7IH0KICAgfCBTb3VyY2VFbGVtZW50
cyAgICAgICAgICAgICAgeyAkJCA9IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShHTE9CQUxfREFU
QSwgJDEubV9ub2RlLCAkMS5tX3ZhckRlY2xhcmF0aW9ucyA/ICYkMS5tX3ZhckRlY2xhcmF0aW9u
cy0+ZGF0YSA6IDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQxLm1fZnVuY0RlY2xhcmF0aW9ucyA/ICYkMS5tX2Z1bmNE
ZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgRXZhbEZl
YXR1cmUpICE9IDAsICgkMS5tX2ZlYXR1cmVJbmZvICYgQ2xvc3VyZUZlYXR1cmUpICE9IDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJDEubV9udW1Db25zdGFudHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgQXJn
dW1lbnRzRmVhdHVyZSkgIT0gMCwgJDEubV9udW1Db25zdGFudHMpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEFzIGluIG1lcmdlRGVjbGFyYXRpb25MaXN0cygpIHdlIGhh
dmUgdG8gcmVmL2RlcmVmIHRvIHNhZmVseSBnZXQgcmlkIG9mCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlIGRlY2xhcmF0aW9uIGxpc3RzLgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICgkMS5tX3ZhckRlY2xhcmF0aW9ucykgewpAQCAtMTE5Niwx
MCArMTE5NiwxMCBAQCBGdW5jdGlvbkJvZHk6CiA7CiAKIFByb2dyYW06Ci0gICAgLyogbm90IGlu
IHNwZWMgKi8gICAgICAgICAgICAgICAgICAgeyBHTE9CQUxfREFUQS0+cGFyc2VyLT5kaWRGaW5p
c2hQYXJzaW5nKG5ldyBTb3VyY2VFbGVtZW50cyhHTE9CQUxfREFUQSksIDAsIDAsIGZhbHNlLCBm
YWxzZSwgQDAubGFzdF9saW5lLCAwKTsgfQorICAgIC8qIG5vdCBpbiBzcGVjICovICAgICAgICAg
ICAgICAgICAgIHsgR0xPQkFMX0RBVEEtPnBhcnNlci0+ZGlkRmluaXNoUGFyc2luZyhuZXcgU291
cmNlRWxlbWVudHMoR0xPQkFMX0RBVEEpLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBAMC5s
YXN0X2xpbmUsIDApOyB9CiAgICAgfCBTb3VyY2VFbGVtZW50cyAgICAgICAgICAgICAgICAgICAg
eyBHTE9CQUxfREFUQS0+cGFyc2VyLT5kaWRGaW5pc2hQYXJzaW5nKCQxLm1fbm9kZSwgJDEubV92
YXJEZWNsYXJhdGlvbnMsICQxLm1fZnVuY0RlY2xhcmF0aW9ucywgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkMS5t
X2ZlYXR1cmVJbmZvICYgRXZhbEZlYXR1cmUpICE9IDAsICgkMS5tX2ZlYXR1cmVJbmZvICYgQ2xv
c3VyZUZlYXR1cmUpICE9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxLmxhc3RfbGluZSwgJDEubV9udW1Db25z
dGFudHMpOyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgkMS5tX2ZlYXR1cmVJbmZvICYgQXJndW1lbnRzRmVhdHVy
ZSkgIT0gMCwgQDEubGFzdF9saW5lLCAkMS5tX251bUNvbnN0YW50cyk7IH0KIDsKIAogU291cmNl
RWxlbWVudHM6CkluZGV4OiBranMvbm9kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5j
cHAJKHJldmlzaW9uIDM3MDM4KQorKysga2pzL25vZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTcxMiwxMiArMTcxMiwxMyBAQCBSZWdpc3RlcklEKiBUcnlOb2RlOjplbWl0Q29kZShDb2RlR2Vu
ZXJhCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRz
Q2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVk
c0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykKICAgICA6IEJs
b2NrTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbikKICAgICAsIG1fc291cmNlVVJMKGdsb2JhbERh
dGEtPnBhcnNlci0+c291cmNlVVJMKCkpCiAgICAgLCBtX3NvdXJjZUlkKGdsb2JhbERhdGEtPnBh
cnNlci0+c291cmNlSWQoKSkKICAgICAsIG1fdXNlc0V2YWwodXNlc0V2YWwpCiAgICAgLCBtX25l
ZWRzQ2xvc3VyZShuZWVkc0Nsb3N1cmUpCisgICAgLCBtX3VzZXNBcmd1bWVudHModXNlc0FyZ3Vt
ZW50cykKICAgICAsIG1fbnVtQ29uc3RhbnRzKG51bUNvbnN0YW50cykKIHsKICAgICBpZiAodmFy
U3RhY2spCkBAIC0xNzMwLDIxICsxNzMxLDIxIEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmEKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dy
YW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVByb2dyYW1Ob2RlOjpQcm9n
cmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIFNvdXJjZVBy
b3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUs
IGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50
cykKK1Byb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50
cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgdXNlc0V2YWwsIG5lZWRzQ2xvc3VyZSwgdXNlc0FyZ3VtZW50cywgbnVtQ29uc3RhbnRz
KQogICAgICwgbV9zb3VyY2VQcm92aWRlcihzb3VyY2VQcm92aWRlcikKIHsKIH0KIAotUHJvZ3Jh
bU5vZGUqIFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3Vy
Y2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayog
ZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWws
IGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKQorUHJvZ3JhbU5vZGUqIFByb2dy
YW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBT
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHND
bG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgcmV0
dXJuIG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgc291cmNlUHJvdmlkZXIsIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50
cyk7CisgICAgcmV0dXJuIG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFy
U3RhY2ssIGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIsIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUs
IHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1F
dmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNr
LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVl
ZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJlLCBu
dW1Db25zdGFudHMpCitFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNl
c0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25z
dGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBm
dW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0
YW50cykKICAgICAsIG1fc291cmNlUHJvdmlkZXIoc291cmNlUHJvdmlkZXIpCiB7CiB9CkBAIC0x
Nzc1LDE1ICsxNzc2LDE1IEBAIHZvaWQgRXZhbE5vZGU6OmdlbmVyYXRlQ29kZShTY29wZUNoYWlu
Tm8KICAgICBnZW5lcmF0b3IuZ2VuZXJhdGUoKTsKIH0KIAotRXZhbE5vZGUqIEV2YWxOb2RlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92
aWRlciogc291cmNlUHJvdmlkZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBp
bnQgbnVtQ29uc3RhbnRzKQorRXZhbE5vZGUqIEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlk
ZXIsIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMs
IGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBFdmFsTm9kZShnbG9iYWxEYXRh
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIsIHVzZXNFdmFs
LCBuZWVkc0Nsb3N1cmUsIG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBFdmFsTm9kZShn
bG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgc291cmNlUHJvdmlkZXIs
IHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9u
Qm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3Bl
Tm9kZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgdXNlc0V2YWws
IG5lZWRzQ2xvc3VyZSwgbnVtQ29uc3RhbnRzKQorRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25C
b2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGJvb2wgdXNl
c0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1Db25z
dGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBm
dW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0
YW50cykKICAgICAsIG1fcmVmQ291bnQoMCkKIHsKIH0KQEAgLTE3OTQsMTQgKzE3OTUsMTQgQEAg
dm9pZCBGdW5jdGlvbkJvZHlOb2RlOjptYXJrKCkKICAgICAgICAgbV9jb2RlLT5tYXJrKCk7CiB9
CiAKLUZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHND
bG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5
Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgYm9v
bCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51
bUNvbnN0YW50cykKIHsKLSAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0
YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBuZWVkc0Nsb3N1cmUs
IG51bUNvbnN0YW50cyk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERh
dGEsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCB1c2VzRXZhbCwgbmVlZHNDbG9zdXJl
LCB1c2VzQXJndW1lbnRzLCBudW1Db25zdGFudHMpOwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBG
dW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJl
LCBpbnQgbnVtQ29uc3RhbnRzKQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgU291cmNlUHJv
dmlkZXIqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1l
bnRzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9k
ZShnbG9iYWxEYXRhLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgdXNlc0V2YWwsIG5l
ZWRzQ2xvc3VyZSwgbnVtQ29uc3RhbnRzKTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5v
ZGUoZ2xvYmFsRGF0YSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIHVzZXNFdmFsLCBu
ZWVkc0Nsb3N1cmUsIHVzZXNBcmd1bWVudHMsIG51bUNvbnN0YW50cyk7CiB9CiAKIHZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6Z2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSkKSW5kZXg6IGtqcy9ub2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9ub2Rlcy5oCShyZXZpc2lv
biAzNzAzOCkKKysrIGtqcy9ub2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTY3LDcgKzIxNjcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNjb3BlTm9kZSA6IHB1YmxpYyBCbG9j
a05vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwg
Ym9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAg
ICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVz
ZXNBcmd1bWVudHMsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CiAKICAgICAgICAg
aW50IHNvdXJjZUlkKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZUlkOyB9
CiAgICAgICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KQEAgLTIxNzUsNyArMjE3NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICAgICAgYm9vbCBuZWVkc0Nsb3N1cmUoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzQ2xvc3VyZTsgfQotICAgICAgICAKKyAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzQXJndW1lbnRzOyB9CisKICAgICAgICAgVmFyU3RhY2smIHZh
clN0YWNrKCkgeyByZXR1cm4gbV92YXJTdGFjazsgfQogICAgICAgICBGdW5jdGlvblN0YWNrJiBm
dW5jdGlvblN0YWNrKCkgeyByZXR1cm4gbV9mdW5jdGlvblN0YWNrOyB9CiAKQEAgLTIxOTUsMTIg
KzIxOTYsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX3NvdXJjZUlkOwogICAg
ICAgICBib29sIG1fdXNlc0V2YWw7CiAgICAgICAgIGJvb2wgbV9uZWVkc0Nsb3N1cmU7CisgICAg
ICAgIGJvb2wgbV91c2VzQXJndW1lbnRzOwogICAgICAgICBpbnQgbV9udW1Db25zdGFudHM7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUHJvZ3JhbU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEq
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3Zp
ZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMp
IEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHN0YXRpYyBQcm9ncmFtTm9kZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291
cmNlUHJvdmlkZXIqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2Vz
QXJndW1lbnRzLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIFBy
b2dyYW1Db2RlQmxvY2smIGJ5dGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSBKU0Nf
RkFTVF9DQUxMCiAgICAgICAgIHsKQEAgLTIyMTAsNyArMjIxMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2Jh
bERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJj
ZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25z
dGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSos
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlk
ZXIqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1lbnRz
LCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIHZvaWQgZ2VuZXJh
dGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKikgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0Nf
RkFTVF9DQUxMOwpAQCAtMjIyNSw3ICsyMjI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBFdmFsTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIEV2YWxOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWws
IGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOworICAg
ICAgICBzdGF0aWMgRXZhbE5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2Vz
RXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0
YW50cykgSlNDX0ZBU1RfQ0FMTDsKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBieXRlQ29kZShT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICB7CkBAIC0y
MjM1LDcgKzIyMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBTb3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWwsIGJv
b2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOworICAgICAg
ICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVu
Y3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Ns
b3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FM
TDsKIAogICAgICAgICB2b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEpTQ19GQVNU
X0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKQEAgLTIyNDcsOCArMjI0OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBT
Y29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUq
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1
cmUsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7Ci0gICAgICAgIHN0YXRpYyBGdW5j
dGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwg
aW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9u
Qm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNr
KiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBu
ZWVkc0Nsb3N1cmUsIGJvb2wgdXNlc0FyZ3VtZW50cywgaW50IG51bUNvbnN0YW50cykgSlNDX0ZB
U1RfQ0FMTDsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2Jh
bERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wg
dXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBib29sIHVzZXNBcmd1bWVudHMsIGludCBudW1D
b25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CiAKICAgICAgICAgVmVjdG9yPElkZW50aWZpZXI+JiBw
YXJhbWV0ZXJzKCkgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAg
ICAgVVN0cmluZyBwYXJhbVN0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CkBAIC0yMjkxLDcg
KzIyOTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgot
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1
cmUsIGludCBudW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgYm9vbCB1c2VzQXJndW1l
bnRzLCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqKSBKU0NfRkFTVF9DQUxMOwo=
</data>
<flag name="review"
          id="10778"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>