<?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>152383</bug_id>
          
          <creation_ts>2015-12-17 02:44:11 -0800</creation_ts>
          <short_desc>[ES6][ES7] Drop Constructability of generator function</short_desc>
          <delta_ts>2015-12-29 11:50:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1149955</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-17 02:44:11 -0800</bug_when>
    <thetext>In ES7, the generator function becomes non-constructible.
This is good for the current JSC implementation. We no longer need to consider about newTarget when creating a generator.
And this is already introduced in ECMA262 2016 draft.

https://github.com/tc39/ecma262/releases/tag/es2016-draft-20151201
https://github.com/tc39/tc39-notes/blob/master/es7/2015-07/july-28.md#67-new--generatorfunction
https://github.com/tc39/tc39-notes/blob/master/es7/2015-07/july-29.md#revisit-67-new--generatorfunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151357</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-26 07:47:53 -0800</bug_when>
    <thetext>Working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151358</commentid>
    <comment_count>2</comment_count>
      <attachid>267926</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-26 08:07:40 -0800</bug_when>
    <thetext>Created attachment 267926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151448</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-27 22:42:23 -0800</bug_when>
    <thetext>Is there a strong chance this could change before ES7 is finalized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151451</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-28 06:24:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Is there a strong chance this could change before ES7 is finalized?

If  something happens or better semantics is invested, it could be changed in the future.
But I don&apos;t think this behavior will be reverted. Because of inconsistency of the current behavior, even if the currently proposed one won&apos;t be landed as is, the ES2015 behavior will be changed anyway. (So, anyway, I think we will be required to change the current form in the future)
Because,

1. The current form is not consistent to the class constructor behavior. We cannot define (class A { *constructor() { } }), but the generator is constructible.
2. As described in the https://github.com/tc39/tc39-notes/blob/master/es7/2015-07/july-28.md#67-new--generatorfunction, `new` on the generator does not provide any useful things. |this| becomes TDZ, so we cannot touch the constructed object. And since its body is not the part of the constructor, It will be called when calling next(). So there&apos;s no chance to initialize |this| with the constructor (like, setting some properties etc.) even if |this| in `new generatorFunction()` represents the constructed object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151484</commentid>
    <comment_count>5</comment_count>
      <attachid>267926</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-28 13:01:24 -0800</bug_when>
    <thetext>Comment on attachment 267926
Patch

Ok. SGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151534</commentid>
    <comment_count>6</comment_count>
      <attachid>267926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-29 03:49:58 -0800</bug_when>
    <thetext>Comment on attachment 267926
Patch

Clearing flags on attachment: 267926

Committed r194435: &lt;http://trac.webkit.org/changeset/194435&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151535</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-29 03:50:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151536</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-29 05:57:06 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151537</commentid>
    <comment_count>9</comment_count>
      <attachid>267984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-29 05:57:10 -0800</bug_when>
    <thetext>Created attachment 267984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151538</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-12-29 05:57:45 -0800</bug_when>
    <thetext>Committed r194436: &lt;http://trac.webkit.org/changeset/194436&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267926</attachid>
            <date>2015-12-26 08:07:40 -0800</date>
            <delta_ts>2015-12-29 05:57:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152383-20151227010704.patch</filename>
            <type>text/plain</type>
            <size>38097</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZjAwNmRiOWZkNzI4Mjc3Y2MzYThiZjU1NTY3NDk3YTFjNmU3M2Q4Li5lM2MwYmRkZDUzZTlmMDlk
ZjU1MjkxM2RmZjIxZmZkZGE3MTgwNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNS0xMi0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XVtFUzddIERyb3AgQ29uc3RydWN0YWJpbGl0eSBvZiBnZW5l
cmF0b3IgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MjM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIGRyb3AgdGhlIGNvbnN0cnVjdGFiaWxpdHkgb2YgZ2VuZXJhdG9yIGZ1bmN0aW9u
cy4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkgbGFuZGVkIGluIEVTIDIw
MTYgZHJhZnRbMV0uCisgICAgICAgIEFuZCB0aGlzIHNpbXBsaWZpZXMgdGhlIGV4aXN0aW5nIEpT
QydzIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbjsKKyAgICAgICAgZHJvcHBpbmcgR2VuZXJhdG9y
VGhpc01vZGUgZmxhZy4KKworICAgICAgICBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2Vj
bWEyNjIvcmVsZWFzZXMvdGFnL2VzMjAxNi1kcmFmdC0yMDE1MTIwMQorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRl
RXhlY3V0YWJsZUludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9FeGVjdXRhYmxlSW5mby5o
OgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6RXhlY3V0YWJsZUluZm8pOgorICAgICAg
ICAoSlNDOjpFeGVjdXRhYmxlSW5mbzo6Z2VuZXJhdG9yVGhpc01vZGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6Z2VuZXJhdG9yVGhpc01vZGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjptYWtlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVGhpc01v
ZGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmV2YWwpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpn
ZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZXZhbC10aGlzLmpzOgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItaXMt
bm90LWNvbnN0cnVjdGlibGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAoQS5zdGF0aWNHZW4pOgorICAgICAgICAoQS5wcm90b3R5cGUuZ2VuKToKKyAgICAgICAg
KEEpOgorICAgICAgICAoVHlwZUVycm9yKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRoaXMuanM6CisgICAgICAgIChzaG91bGRCZS5nLm5leHQpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzOgorICAgICAgICAoc2hvdWxkVGhy
b3cpOgorCiAyMDE1LTEyLTIzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBqc2MgQ0xJIHRvb2wgY3Jhc2hlcyBvbiBFT0YuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagppbmRleCBjYzVjZTQ0N2NlOTNjNDYzMjUxZjVkMDA2NWRiZWE0MGUz
YTdiOWY5Li42ZDk3MjlmZjU0ZGM5YTcxNzUzZWY4MTY0YjlhZjNlM2MwYjQ2ZjdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTE2MzEsNyArMTYzMSw2IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcR2VuZXJhdG9yUHJvdG90eXBlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEdlbmVyYXRvclRoaXNNb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxydW50aW1lXEdlbmVyaWNBcmd1bWVudHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcR2VuZXJpY09mZnNldC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDE0YThhOGM1NTdhNTIz
ZDc4NGFlZjNkNjZiZmRjM2Y4MGM0MzVhMDUuLmUzMDkzZjlhZDBiMmQxYTM4YjZlZjMzNDRiNzBk
MzY4OTg1YjRkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTI4OTcsOSArMjg5Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEdlbmVyYXRvclByb3RvdHlwZS5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxHZW5lcmF0b3JUaGlzTW9kZS5oIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxHZXRQdXRJbmZvLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0MzljYzFjNTAxY2Fh
NDdkZDliZTg2ZWEwZTNjYTY3NTk4MTYwOWIuLmIzNjdlOGJjZWZjZDNmODM1YzliNTA3NjU3OTRl
M2RjNmIyOWQ1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQzLDcgKzEy
NDMsNiBAQAogCQk3MEI3OTE5NzFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5
MTk4MUMwMjRBMjkwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODkxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwQjc5MTk5MUMwMjRBMjkw
MDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThCMUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JUaGlzTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTlCMUMwMjRBNDYwMDI0ODFFMiAv
KiBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MThDMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1
bmN0aW9uLmNwcCAqLzsgfTsKIAkJNzBCNzkxOUMxQzAyNEE0OTAwMjQ4MUUyIC8qIEpTR2VuZXJh
dG9yRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MThEMUMwMjQ0NjIwMDI0ODFFMiAvKiBKU0dlbmVyYXRvckZ1bmN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOUQx
QzAyNEE1NjAwMjQ4MUUyIC8qIEdlbmVyYXRvclByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTkwMUMwMjQ2Q0UwMDI0ODFF
MiAvKiBHZW5lcmF0b3JQcm90b3R5cGUubHV0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMzODIsNyArMzM4MSw2IEBACiAJCTcwQjc5MTg4MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4OTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlbmVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
Qjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MThCMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JU
aGlzTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JUaGlz
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4QzFDMDI0NDYyMDAy
NDgxRTIgLyogSlNHZW5lcmF0b3JGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0dlbmVyYXRvckZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzBCNzkxOEQxQzAyNDQ2MjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW5lcmF0b3JGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4RTFDMDI0NEM5MDAyNDgx
RTIgLyogU291cmNlQ29kZUtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b3VyY2VDb2RlS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTUxLDcgKzU1
NDksNiBAQAogCQkJCTcwQjc5MTg4MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oICovLAogCQkJCTcwQjc5MTg5MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JQcm90b3R5cGUuY3BwICovLAogCQkJCTcwQjc5MThBMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JQcm90b3R5cGUuaCAqLywKLQkJCQk3MEI3OTE4QjFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yVGhpc01vZGUuaCAqLywKIAkJCQkwRkUwNTAxMTFBQTkwOTExMDBEMzNCMzMgLyogR2Vu
ZXJpY0FyZ3VtZW50cy5oICovLAogCQkJCTBGRTA1MDEyMUFBOTA5MTEwMEQzM0IzMyAvKiBHZW5l
cmljQXJndW1lbnRzSW5saW5lcy5oICovLAogCQkJCTBGRTA1MDEzMUFBOTA5MTEwMEQzM0IzMyAv
KiBHZW5lcmljT2Zmc2V0LmggKi8sCkBAIC03ODk4LDcgKzc4OTUsNiBAQAogCQkJCUJDMThDNDZB
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTdHJpbmdQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQjM4NzhFMUJGQkM0NEQwMEUzQUIxRSAvKiBBaXJCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxNDJFMzEzQjEzNEZGMEE2MDBBRkFEQjUgLyogU3Ryb25nLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk3MEI3OTE5QTFDMDI0QTI5MDAyNDgxRTIgLyogR2VuZXJhdG9yVGhpc01vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTE0NTcyMjg2MTQzN0UxNDAwMDVGREUyNiAvKiBTdHJvbmdJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0RFM0FCODBFNkM4MkY1MDAxNDUzQTcgLyog
U3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RTRFRTcwOTBFQkI3OTYzMDA1OTM0QUEg
LyogU3RydWN0dXJlQ2hhaW4uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBiODAwZjUx
M2U5ZmFhYTU0YTI0MmQ1ZTEyNDM3ZjUwYzdmOWQ1NmQ4Li5kYTc1Mjg3OGMyMWMzNTcyNWUyOTE4
OWZiZmMyMWU0ZTE2NzgwNWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzCiAgICAgfQogICAgIG1ldGFkYXRhLT5vdmVycmlkZU5hbWUobmFt
ZSk7CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCBkdW1teVREWlZhcmlhYmxlczsKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0
cnVjdEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlOjpOb25FbXB0eSwgZHVtbXlURFpWYXJpYWJs
ZXMsIGZhbHNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxp
dHksIGR1bW15VERaVmFyaWFibGVzLCBmYWxzZSwgV1RGOjptb3ZlKHNvdXJjZU92ZXJyaWRlKSk7
CiAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXROYW1lVmFsdWUodm0sIGpzU3RyaW5nKCZ2bSwg
bmFtZS5zdHJpbmcoKSkpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhlY3V0YWJsZUluZm8uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCmluZGV4IGFh
YzM5MDRmZjAzNGM5ZTYwNzE0ZmU5OTM2NTQ5ZmU5NWQ0YTExZTUuLmE5MjM0NDFiYjcyYTU1YWU0
NTM1ZjZhMmI5MTRiZjFlMmE3YjVmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9FeGVjdXRhYmxlSW5mby5oCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEV4ZWN1
dGFibGVJbmZvX2gKICNkZWZpbmUgRXhlY3V0YWJsZUluZm9faAogCi0jaW5jbHVkZSAiR2VuZXJh
dG9yVGhpc01vZGUuaCIKICNpbmNsdWRlICJQYXJzZXJNb2Rlcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTM0LDEzICszMywxMiBAQAogLy8gRklYTUU6IFRoZXNlIGZsYWdzLCBQYXJzZXJNb2Rl
cyBhbmQgcHJvcGFnYXRpb24gdG8gWFhYQ29kZUJsb2NrcyBzaG91bGQgYmUgcmVvcmdhbml6ZWQu
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ3CiBzdHJ1
Y3QgRXhlY3V0YWJsZUluZm8gewotICAgIEV4ZWN1dGFibGVJbmZvKGJvb2wgbmVlZHNBY3RpdmF0
aW9uLCBib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9y
LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBHZW5lcmF0b3JUaGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVy
QmluZGluZywgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICBFeGVjdXRhYmxl
SW5mbyhib29sIG5lZWRzQWN0aXZhdGlvbiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBpc1N0cmljdE1v
ZGUsIGJvb2wgaXNDb25zdHJ1Y3RvciwgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbiwgQ29uc3RydWN0
b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZywgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICAgICAgOiBtX25lZWRzQWN0aXZhdGlvbihu
ZWVkc0FjdGl2YXRpb24pCiAgICAgICAgICwgbV91c2VzRXZhbCh1c2VzRXZhbCkKICAgICAgICAg
LCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0NvbnN0cnVjdG9y
KGlzQ29uc3RydWN0b3IpCiAgICAgICAgICwgbV9pc0J1aWx0aW5GdW5jdGlvbihpc0J1aWx0aW5G
dW5jdGlvbikKLSAgICAgICAgLCBtX2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihnZW5lcmF0b3JUaGlzTW9kZSkpCiAgICAgICAgICwgbV9jb25zdHJ1Y3RvcktpbmQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGNvbnN0cnVjdG9yS2luZCkpCiAgICAgICAgICwgbV9zdXBlckJp
bmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN1cGVyQmluZGluZykpCiAgICAgICAgICwgbV9w
YXJzZU1vZGUocGFyc2VNb2RlKQpAQCAtNDksNyArNDcsNiBAQCBzdHJ1Y3QgRXhlY3V0YWJsZUlu
Zm8gewogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJC
aW5kaW5nID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKLSAgICAgICAg
QVNTRVJUKG1fZ2VuZXJhdG9yVGhpc01vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGdlbmVy
YXRvclRoaXNNb2RlKSk7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX25lZWRzQWN0aXZhdGlvbjsgfQpAQCAtNTcsNyArNTQsNiBAQCBzdHJ1Y3Qg
RXhlY3V0YWJsZUluZm8gewogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQotICAgIEdlbmVyYXRvclRoaXNNb2RlIGdl
bmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8R2VuZXJhdG9yVGhp
c01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9CiAgICAgU3VwZXJCaW5kaW5nIHN1cGVyQmluZGluZygpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGluZz4obV9zdXBlckJpbmRpbmcpOyB9
CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VN
b2RlOyB9CkBAIC03MCw3ICs2Niw2IEBAIHN0cnVjdCBFeGVjdXRhYmxlSW5mbyB7CiAgICAgdW5z
aWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6
IDE7CiAgICAgdW5zaWduZWQgbV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7Ci0gICAgdW5zaWduZWQg
bV9nZW5lcmF0b3JUaGlzTW9kZSA6IDE7CiAgICAgdW5zaWduZWQgbV9jb25zdHJ1Y3RvcktpbmQg
OiAyOwogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICBTb3VyY2VQYXJzZU1v
ZGUgbV9wYXJzZU1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4YTdkMDI2NzkzZDQ2YjgyNWZiZjNlZjc2NTJh
NTQzODM5NjUwNDYzLi4yMmRiZjk2ODQ3OTc0ZDM4MWNiYjg0MmYxY2IyZDQ0NGNhMzVmNjI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKQEAgLTY1LDcgKzY1LDYgQEAKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMo
ZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGluZm8uaXNCdWlsdGluRnVuY3Rpb24o
KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbmZvLmNv
bnN0cnVjdG9yS2luZCgpKSkKLSAgICAsIG1fZ2VuZXJhdG9yVGhpc01vZGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGluZm8uZ2VuZXJhdG9yVGhpc01vZGUoKSkpCiAgICAgLCBtX3N1cGVyQmluZGlu
ZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5zdXBlckJpbmRpbmcoKSkpCiAgICAgLCBtX2lz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dChpbmZvLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpKQogICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGluZm8uaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAppbmRleCBiZWM2ZTA4NjExZGM1ZjA5NGY3OWFiODVjMTMzNWE5MTFiOWY5
MTFiLi5hOGU0MGVkOTIzZWMxOGE1YTJlYzA3ZDY2YjJjNzY2N2YwOTA3Yzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0
QWJpbGl0eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKLSNpbmNsdWRlICJH
ZW5lcmF0b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAi
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtMjA3LDcgKzIwNiw2IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc0J1aWx0
aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAg
IENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQotICAgIEdlbmVyYXRv
clRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
R2VuZXJhdG9yVGhpc01vZGU+KG1fZ2VuZXJhdG9yVGhpc01vZGUpOyB9CiAgICAgU3VwZXJCaW5k
aW5nIHN1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN1cGVyQmluZGlu
Zz4obV9zdXBlckJpbmRpbmcpOyB9CiAKICAgICB2b2lkIHNocmlua1RvRml0KCkKQEAgLTM5NCw3
ICszOTIsNiBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMgOiAxOwogICAgIHVuc2lnbmVkIG1faXNC
dWlsdGluRnVuY3Rpb24gOiAxOwogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0b3JLaW5kIDogMjsK
LSAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsKICAgICB1bnNpZ25lZCBtX3N1
cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCAwYzdmNDUyNzFhMjc2MjIwNjI5ODUyYjA2MGY1ZTdm
YjA2YjZjMDRiLi5kOTE0Y2ExYTA4NDlmOGRlZGM5NzBhNDQwYjA4ZDljMWQxNGMyZDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIFVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAg
ICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZShmdW5jdGlvbi0+ZmVhdHVyZXMoKSwgZnVuY3Rpb24t
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpOwogICAgIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2Rl
QmxvY2sqIHJlc3VsdCA9IFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZSgmdm0sIEZ1
bmN0aW9uQ29kZSwKLSAgICAgICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZh
dGlvbigpLCBmdW5jdGlvbi0+dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5G
dW5jdGlvbiwgZXhlY3V0YWJsZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPmdlbmVy
YXRvclRoaXNNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1vZGUsICBl
eGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpKTsKKyAgICAg
ICAgRXhlY3V0YWJsZUluZm8oZnVuY3Rpb24tPm5lZWRzQWN0aXZhdGlvbigpLCBmdW5jdGlvbi0+
dXNlc0V2YWwoKSwgZnVuY3Rpb24tPmlzU3RyaWN0TW9kZSgpLCBraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QsIGZ1bmN0aW9uS2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiwgZXhlY3V0YWJs
ZS0+Y29uc3RydWN0b3JLaW5kKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBwYXJzZU1v
ZGUsICBleGVjdXRhYmxlLT5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpKTsK
IAogICAgIGF1dG8gZ2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHZW5lcmF0b3I+
KHZtLCBmdW5jdGlvbi5nZXQoKSwgcmVzdWx0LCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwg
ZXhlY3V0YWJsZS0+cGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSkpOwogICAgIGVycm9yID0gZ2Vu
ZXJhdG9yLT5nZW5lcmF0ZSgpOwpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENv
bnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJh
dG9yVGhpc01vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCkKK1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4m
JiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVu
Y3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgVmFyaWFi
bGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGJvb2wgaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbmFt
ZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1l
KCkpCkBAIC0xMDAsNyArMTAwLDYgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IGdlbmVyYXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICAsIG1fY29uc3RydWN0QWJp
bGl0eShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0QWJpbGl0eSkpCiAgICAgLCBtX2Nv
bnN0cnVjdG9yS2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+Y29uc3RydWN0b3JLaW5k
KCkpKQogICAgICwgbV9mdW5jdGlvbk1vZGUobm9kZS0+ZnVuY3Rpb25Nb2RlKCkpCi0gICAgLCBt
X2dlbmVyYXRvclRoaXNNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihnZW5lcmF0b3JUaGlzTW9k
ZSkpCiAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+c3Vw
ZXJCaW5kaW5nKCkpKQogICAgICwgbV9pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoaXNEZXJp
dmVkQ29uc3RydWN0b3JDb250ZXh0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCBmYTIx
ZTM4NzAwNzFiYzFhMDBmY2E1NWYyOTk0YzVhN2M5ZGFlYjBlLi5iZTgxYWNhMDIwMzM2NjQxNWY1
ZTQ1ODgyMGE1YzFjMGJiMjQwMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkNvZGVUeXBlLmgiCiAjaW5jbHVkZSAiQ29uc3RydWN0QWJpbGl0
eS5oIgogI2luY2x1ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKLSNpbmNsdWRlICJHZW5lcmF0
b3JUaGlzTW9kZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCiAjaW5jbHVkZSAiSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtNjYsMTAgKzY1LDEwIEBAIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdHlw
ZWRlZiBKU0NlbGwgQmFzZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7CiAKLSAgICBz
dGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVu
Y3Rpb25LaW5kIHVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHksIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNNb2RlLCBWYXJpYWJsZUVu
dmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQsIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51
bGxwdHIpCisgICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0q
IHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2Rl
LCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJp
bGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQsIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0tPmhlYXApKQotICAgICAgICAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51bmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUp
LCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9y
VGhpc01vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQpOworICAgICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHZtLT51
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgc291cmNlLCBXVEY6Om1v
dmUoc291cmNlT3ZlcnJpZGUpLCBub2RlLCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgY29uc3RydWN0
QWJpbGl0eSwgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCk7CiAgICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbigqdm0pOwogICAgICAgICBy
ZXR1cm4gaW5zdGFuY2U7CiAgICAgfQpAQCAtODMsNyArODIsNiBAQCBjbGFzcyBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGJvb2wgaXNJblN0
cmljdENvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5TdHJpY3RDb250ZXh0OyB9CiAgICAg
RnVuY3Rpb25Nb2RlIGZ1bmN0aW9uTW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1
bmN0aW9uTW9kZT4obV9mdW5jdGlvbk1vZGUpOyB9CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9Ci0gICAgR2VuZXJhdG9yVGhpc01vZGUgZ2VuZXJhdG9yVGhp
c01vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxHZW5lcmF0b3JUaGlzTW9kZT4obV9n
ZW5lcmF0b3JUaGlzTW9kZSk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0K
IAogICAgIHVuc2lnbmVkIHVubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVy
biBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQ7IH0KQEAgLTEzMyw3ICsxMzEsNyBAQCBjbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAg
IGJvb2wgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgY29uc3Qge3JldHVybiBtX2lzRGVy
aXZlZENvbnN0cnVjdG9yQ29udGV4dDsgfQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4mJiBzb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBV
bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgR2VuZXJhdG9yVGhpc01vZGUs
IFZhcmlhYmxlRW52aXJvbm1lbnQmLCBib29sIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7
CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1Y3R1cmUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJyaWRlLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
LCBWYXJpYWJsZUVudmlyb25tZW50JiwgYm9vbCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQp
OwogICAgIAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3Vu
bGlua2VkQ29kZUJsb2NrRm9yQ2FsbDsKICAgICBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlv
bkNvZGVCbG9jaz4gbV91bmxpbmtlZENvZGVCbG9ja0ZvckNvbnN0cnVjdDsKQEAgLTE2NCw3ICsx
NjIsNiBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIHVuc2lnbmVkIG1fY29uc3RydWN0QWJpbGl0eTogMTsKICAgICB1bnNpZ25l
ZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgdW5zaWduZWQgbV9mdW5jdGlvbk1vZGUgOiAx
OyAvLyBGdW5jdGlvbk1vZGUKLSAgICB1bnNpZ25lZCBtX2dlbmVyYXRvclRoaXNNb2RlIDogMTsK
ICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQgOiAxOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGJmNjAxYjUx
ZjdhYmYyNjMzODU4MDc5YWZiYzA2NDIwODZkZTllNjkuLjFjZmExOGQwMjIyMTcwY2M4OGUzNDBk
YjZlOTM4YTlhODc4MTcyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yOTgsOCArMjk4LDYgQEAg
UGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAvLyBCZWZvcmUg
ZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0
IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKICAgICAgICAg
bV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07Ci0gICAgICAgIGlmIChnZW5l
cmF0b3JUaGlzTW9kZSgpID09IEdlbmVyYXRvclRoaXNNb2RlOjpFbXB0eSkKLSAgICAgICAgICAg
IGVtaXRNb3ZlRW1wdHlWYWx1ZSgmbV90aGlzUmVnaXN0ZXIpOwogCiAgICAgICAgIC8vIEp1bXAg
d2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0
aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24uCiAgICAgICAgIC8v
IFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBw
cm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9u
IHBvaW50ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMTAwYmNiM2RlYzQ0ZWQyZGM2MDBiZWU1NDlmMGVm
NTc3YzQyNzY5Zi4uMWQ4OGExMjZjOTJjN2E1NTAxZTA3NjA3MjY5MTQwNGFhZjU3OTZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtMzIsNyArMzIsNiBAQAogI2RlZmluZSBCeXRlY29kZUdlbmVyYXRvcl9o
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JUaGlzTW9kZS5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJMYWJlbC5oIgpAQCAtMjg4LDcgKzI4Nyw2IEBACiAgICAgICAgIGJvb2wgdXNl
c0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlTm9kZS0+dXNlc0V2YWwoKTsgfQogICAgICAg
ICBib29sIHVzZXNUaGlzKCkgY29uc3QgeyByZXR1cm4gbV9zY29wZU5vZGUtPnVzZXNUaGlzKCk7
IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZUJsb2NrLT5jb25zdHJ1Y3RvcktpbmQoKTsgfQotICAgICAgICBHZW5lcmF0b3JU
aGlzTW9kZSBnZW5lcmF0b3JUaGlzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5n
ZW5lcmF0b3JUaGlzTW9kZSgpOyB9CiAgICAgICAgIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jay0+c3VwZXJCaW5kaW5nKCk7IH0KIAogICAgICAg
ICBQYXJzZXJFcnJvciBnZW5lcmF0ZSgpOwpAQCAtODA1LDE4ICs4MDMsMTIgQEAKICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDcKICAg
ICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUgPSBtZXRhZGF0YS0+cGFyc2VNb2Rl
KCk7CiAgICAgICAgICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHkgPSBDb25z
dHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVu
Y3Rpb25Nb2RlKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8
fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKQog
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5u
b3RDb25zdHJ1Y3Q7CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9IENv
bnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUg
JiYgbWV0YWRhdGEtPnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQotICAg
ICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RD
b25zdHJ1Y3Q7Ci0KLSAgICAgICAgICAgIEdlbmVyYXRvclRoaXNNb2RlIGdlbmVyYXRvclRoaXNN
b2RlID0gR2VuZXJhdG9yVGhpc01vZGU6Ok5vbkVtcHR5OwotICAgICAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlICYmIGlzQ29uc3RydWN0
b3IoKSkKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3JUaGlzTW9kZSA9IEdlbmVyYXRvclRoaXNN
b2RlOjpFbXB0eTsKIAotICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUtPnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWls
dGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxG
dW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgZ2VuZXJhdG9yVGhpc01vZGUsIHZhcmlhYmxlc1Vu
ZGVyVERaLCBuZXdpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOworICAgICAgICAgICAgcmV0
dXJuIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUobV92bSwgbV9zY29wZU5vZGUt
PnNvdXJjZSgpLCBtZXRhZGF0YSwgaXNCdWlsdGluRnVuY3Rpb24oKSA/IFVubGlua2VkQnVpbHRp
bkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29uc3RydWN0QWJpbGl0eSwgdmFy
aWFibGVzVW5kZXJURFosIG5ld2lzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGdldFZhcmlhYmxlc1VuZGVyVERaKFZhcmlhYmxlRW52aXJvbm1l
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAppbmRleCA0YWQwNzk1NGIyZjVjOGE1OTVjODgzNThjYTUwMTAxMDMyOWQ0MzM4
Li5iYTk4ZWQ1ZTgyZGUyMDRjZGE4ODQ5NmU2YjVkNjE2MmNiYzM1YmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0x
NDksNyArMTQ5LDcgQEAgUmVnaXN0ZXJJRCogVGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QKICAgICBpZiAoZ2VuZXJhdG9y
LmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0
b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCi0g
ICAgaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3Rv
cktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmdlbmVyYXRv
clRoaXNNb2RlKCkgPT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5IHx8IGdlbmVyYXRvci5pc0Rl
cml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERa
Q2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAog
ICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZlMDJjNDFi
NGMwODNjZmMzZGE4NmZjMTVmZTM2YmQyYjMwZjIzYjYuLjZkMTQwODdjN2U0YWYxYWE3NTQ1ZjY3
MTYxOGJmYWU5Nzg5NGFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTYzLDggKzE2Myw2IEBAIEpTVmFsdWUgZXZhbChD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNU
RFpNb2RlOjpDaGVja0lmTmVlZGVkOwogICAgIGlmIChjYWxsZXJVbmxpbmtlZENvZGVCbG9jay0+
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkKQogICAgICAgICB0
aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpBbHdheXNDaGVjazsKLSAgICBpZiAoY2FsbGVyVW5s
aW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUgJiYgY2FsbGVyVW5saW5rZWRDb2RlQmxvY2stPmdlbmVyYXRvclRoaXNNb2RlKCkg
PT0gR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5KQotICAgICAgICB0aGlzVERaTW9kZSA9IFRoaXNU
RFpNb2RlOjpBbHdheXNDaGVjazsKIAogICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZShtYWtlU291
cmNlKHByb2dyYW1Tb3VyY2UpKTsKICAgICBFdmFsRXhlY3V0YWJsZSogZXZhbCA9IGNhbGxlckNv
ZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLnRyeUdldChjYWxsZXJDb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpLCBzb3VyY2VDb2RlLCB0aGlzVERaTW9kZSwgY2FsbGVyU2NvcGVDaGFpbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAppbmRleCBiMTBiMTE0ZWZm
NTY0NmMzN2JlNTI5NTUzNmM4OTdhYTEzNGYwYzZkLi4wYzEzNDYzYWFiYzEyZWJkMjU5MjVlNjJi
N2VhNDg4MDEzYmNmMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVD
YWNoZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdgogICAg
IG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKTsKICAg
ICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMgYWNjZXNzIHRvIGdsb2JhbCB2
YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVyIFREWi4KICAgICBWYXJpYWJs
ZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgQ29u
c3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0LCBHZW5lcmF0b3JUaGlzTW9kZTo6Tm9uRW1wdHks
IGVtcHR5VERaVmFyaWFibGVzLCBmYWxzZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QsIGVtcHR5VERaVmFyaWFibGVzLCBmYWxzZSk7CiAgICAg
ZnVuY3Rpb25FeGVjdXRhYmxlLT5tX25hbWVWYWx1ZS5zZXQodm0sIGZ1bmN0aW9uRXhlY3V0YWJs
ZSwganNTdHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAKICAgICBtX3NvdXJjZUNvZGUuYWRk
Q2FjaGUoa2V5LCBTb3VyY2VDb2RlVmFsdWUodm0sIGZ1bmN0aW9uRXhlY3V0YWJsZSwgbV9zb3Vy
Y2VDb2RlLmFnZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKaW5kZXggODZhNTc3NzA4Zjk1ZjY5NWVkMzIyMDE0MjE5MzgyMDBjMjcwMGY1Yy4uMTI0OGNh
ZTg4NTM4MDQ1ZDU3OTc2MTUzNmM1ZDE4NmRlYjg4NzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNDUzLDcgKzQ1Myw3IEBAIGNsYXNzIEV2YWxF
eGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIERFQ0xBUkVf
SU5GTzsKIAogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJl
dHVybiBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJp
Y3RNb2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JU
aGlzTW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1v
ZGU6OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgaXNBcnJvd0Z1
bmN0aW9uQ29udGV4dCgpKTsgfQorICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkg
Y29uc3QgeyByZXR1cm4gRXhlY3V0YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFs
KCksIGlzU3RyaWN0TW9kZSgpLCBmYWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkpOyB9
CiAKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENv
ZGVCbG9jay0+bnVtVmFyaWFibGVzKCk7IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZkZ1bmN0aW9u
RGVjbHMoKSB7IHJldHVybiBtX3VubGlua2VkRXZhbENvZGVCbG9jay0+bnVtYmVyT2ZGdW5jdGlv
bkRlY2xzKCk7IH0KQEAgLTUwNiw3ICs1MDYsNyBAQCBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVy
biBFeGVjdXRhYmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RN
b2RlKCksIGZhbHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBHZW5lcmF0b3JUaGlz
TW9kZTo6Tm9uRW1wdHksIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSwgZmFsc2UpOyB9Cisg
ICAgRXhlY3V0YWJsZUluZm8gZXhlY3V0YWJsZUluZm8oKSBjb25zdCB7IHJldHVybiBFeGVjdXRh
YmxlSW5mbyhuZWVkc0FjdGl2YXRpb24oKSwgdXNlc0V2YWwoKSwgaXNTdHJpY3RNb2RlKCksIGZh
bHNlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCksIGZhbHNlKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKQEAgLTU0Nyw3ICs1NDcsNyBAQCBjbGFzcyBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAot
ICAgIEV4ZWN1dGFibGVJbmZvIGV4ZWN1dGFibGVJbmZvKCkgY29uc3QgeyByZXR1cm4gRXhlY3V0
YWJsZUluZm8obmVlZHNBY3RpdmF0aW9uKCksIHVzZXNFdmFsKCksIGlzU3RyaWN0TW9kZSgpLCBm
YWxzZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgR2VuZXJhdG9yVGhpc01vZGU6Ok5v
bkVtcHR5LCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVF
dmFsdWF0ZU1vZGUsIGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpLCBmYWxzZSk7IH0KKyAg
ICBFeGVjdXRhYmxlSW5mbyBleGVjdXRhYmxlSW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4ZWN1dGFi
bGVJbmZvKG5lZWRzQWN0aXZhdGlvbigpLCB1c2VzRXZhbCgpLCBpc1N0cmljdE1vZGUoKSwgZmFs
c2UsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVk
LCBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZSwgaXNEZXJpdmVkQ29uc3RydWN0
b3JDb250ZXh0KCksIGZhbHNlKTsgfQogCiAgICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrKiB1bmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2soKSB7IHJldHVybiBtX3VubGlua2Vk
TW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yVGhpc01vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGMwM2U3YjAyMmYxYzY2OWQzOTdhOWI3N2I1ZWYyNGU5NWY1MjA2ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JUaGlzTW9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvclRoaXNNb2RlX2gK
LSNkZWZpbmUgR2VuZXJhdG9yVGhpc01vZGVfaAotCi1uYW1lc3BhY2UgSlNDIHsKLQotLy8gaHR0
cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZnVuY3Rpb25hbGxv
Y2F0ZQotLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
ZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNvbnN0cnVjdC1hcmd1bWVudHNsaXN0LW5ld3Rh
cmdldAotLy8gV2hlbiB0aGUgZnVuY3Rpb24gaXMgYSBHZW5lcmF0b3JGdW5jdGlvbiwgaXRzIFtb
Q29uc3RydWN0b3JLaW5kXV0gaXMgYWx3YXlzICJkZXJpdmVkIi4KLS8vIFRoaXMgbWVhbnMgdGhh
dCBPcmRpbmFyeUNhbGxCaW5kVGhpcyBpbiBzZWN0aW9uIDkuMi4yIGlzIG5ldmVyIGV4ZWN1dGVk
IGZvciBHZW5lcmF0b3JGdW5jdGlvbi4KLS8vIFNvLCB3aGVuIHdlIGV4ZWN1dGUgdGhlIGZvbGxv
d2luZywKLS8vCi0vLyAgICAgZnVuY3Rpb24gKmdlbigpCi0vLyAgICAgewotLy8gICAgICAgIHlp
ZWxkIHRoaXMKLS8vICAgICB9Ci0vLwotLy8gICAgIHsKLS8vICAgICAgICAgbGV0IGcgPSBnZW4o
KTsKLS8vICAgICAgICAgLy8gfHRoaXN8IHNob3VsZCBiZSBnbG9iYWwuCi0vLyAgICAgICAgIGcu
bmV4dCgpOwotLy8gICAgIH0KLS8vCi0vLyAgICAgewotLy8gICAgICAgICBsZXQgZyA9IG5ldyBn
ZW4oKTsKLS8vICAgICAgICAgLy8gfHRoaXN8IGluIGdlbiBzaG91bGQgYmUgVERaIChhbmQgaXQg
d29uJ3QgYmUgZmlsbGVkKS4KLS8vICAgICAgICAgZy5uZXh0KCk7Ci0vLyAgICAgfQotLy8KLS8v
IFRoZSBmb2xsb3dpbmcgZmxhZyBtYW5hZ2VzIHRoaXMgc3RhdGUuIFdoZW4gR2VuZXJhdG9yRnVu
Y3Rpb24gaXMgY2FsbGVkIGFzIGEgY29uc3RydWN0b3IsIGl0IHJldHVybnMgYSBHZW5lcmF0b3Ig
dGhhdCBmdW5jdGlvbiBoYXMgR2VuZXJhdG9yVGhpc01vZGU6OkVtcHR5IGZsYWcuCi0vLyBJbiB0
aGlzIGNhc2UsIHdoZW4gYWNjZXNzaW5nIHx0aGlzfCwgYSBURFogcmVmZXJlbmNlIGVycm9yIG9j
Y3Vycy4KLWVudW0gY2xhc3MgR2VuZXJhdG9yVGhpc01vZGUgOiB1bnNpZ25lZCB7Ci0gICAgRW1w
dHksCi0gICAgTm9uRW1wdHkKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEdlbmVyYXRvclRoaXNNb2Rl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWV2YWwtdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWV2YWwtdGhpcy5qcwppbmRleCBjOWJkNzhkZjc2YTBjYjc1OGI4MWVlYWIyYzI1NWI5
ZGFkMWI0NDc1Li5mNTc2NmRlZjc0NzY3OGRmN2I1NTM3Njc5MGVmMDI4NGQ2OWI4M2EzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1ldmFs
LXRoaXMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZXZhbC10aGlzLmpzCkBAIC0yMiwxMCArMjIsMTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CiAgICAgeWllbGQgZXZhbCgidGhpcyIpOwogfQogCi12YXIg
ZyA9IG5ldyBnZW4oKTsKIHNob3VsZFRocm93KCgpID0+IHsKKyAgICB2YXIgZyA9IG5ldyBnZW4o
KTsKICAgICBnLm5leHQoKS52YWx1ZTsKLX0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2Vz
cyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMg
bm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBnZW4oKScpYCk7CiAKIGNsYXNzIEIg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWlzLW5vdC1jb25zdHJ1Y3RpYmxlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItaXMtbm90LWNvbnN0cnVjdGlibGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzU3MzZjMTQyNzYwMDVkOTY4MTA1MDAyNmRiYzVkZTMyZjJhMTE3YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWlzLW5vdC1j
b25zdHJ1Y3RpYmxlLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1
bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZh
ciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90
IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisK
K2Z1bmN0aW9uICpnZW4oKQoreworfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IGdl
bigpOworfSwgYFR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ25ldyBnZW4oKScpYCk7CisKK2NsYXNzIEEgeworICAgIHN0YXRpYyAqc3RhdGljR2Vu
KCkKKyAgICB7CisgICAgfQorCisgICAgKmdlbigpCisgICAgeworICAgIH0KK307CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBsZXQgYSA9IG5ldyBBKCk7CisgICAgbmV3IGEuZ2VuKCk7Cit9
LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAn
bmV3IGEuZ2VuKCknKWApOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IEEuc3RhdGlj
R2VuKCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZh
bHVhdGluZyAnbmV3IEEuc3RhdGljR2VuKCknKWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdGhpcy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRoaXMuanMKaW5kZXggODgwYWY2ZTA3ODlk
YzE4YmJhZDNhMGFmYmJmNWFkOWE4NWVjMTM1ZS4uMTA0NTBhNzkzZDUzZDNmOTE1ZTFkZDcyNzI4
NzhmZTFkNjVjNmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItdGhpcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10aGlzLmpzCkBAIC0zMSwxMCArMzEsMTAgQEAgZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIHNob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCBnbG9iYWwpOwogICAgIH0KICAgICB7Ci0gICAgICAgIGxldCBnID0gbmV3IGdlbigp
OwogICAgICAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgICAgICBsZXQgZyA9IG5ldyBn
ZW4oKTsKICAgICAgICAgICAgIGcubmV4dCgpOwotICAgICAgICB9LCBgUmVmZXJlbmNlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKKyAgICAgICAgfSwgYFR5
cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgJ25ldyBn
ZW4oKScpYCk7CiAgICAgfQogICAgIHsKICAgICAgICAgbGV0IHRoaXNPYmplY3QgPSB7fTsKQEAg
LTU0LDEwICs1NCwxMCBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKICAgICAgICAgc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIHVuZGVmaW5lZCk7CiAgICAgfQog
ICAgIHsKLSAgICAgICAgbGV0IGcgPSBuZXcgZ2VuKCk7CiAgICAgICAgIHNob3VsZFRocm93KCgp
ID0+IHsKKyAgICAgICAgICAgIGxldCBnID0gbmV3IGdlbigpOwogICAgICAgICAgICAgZy5uZXh0
KCk7Ci0gICAgICAgIH0sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOworICAgICAgICB9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3Qg
YSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IGdlbigpJylgKTsKICAgICB9CiAgICAgewog
ICAgICAgICBsZXQgdGhpc09iamVjdCA9IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itd2l0aC1uZXctdGFyZ2V0Lmpz
CmluZGV4IDBkM2IyZGY5OWE4NDgwY2IzNWE3ZGQ2YjM0ZTY2MjUzNmVhYjhkYjcuLmJhNTAxM2Ux
NzkxNjIyZjNmMjA4ZGFiMTE1OTVkYjExYmRhNzc4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXdpdGgtbmV3LXRhcmdldC5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci13aXRoLW5ldy10
YXJnZXQuanMKQEAgLTMsNiArMywyMSBAQCBmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CiAgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
IH0KIAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKwogZnVuY3Rpb24gKmdlbigpCiB7CiAgICAgeWll
bGQgbmV3LnRhcmdldDsKQEAgLTExLDUgKzI2LDYgQEAgZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgewogdmFyIGcgPSBnZW4oKTsKIHNob3VsZEJlKGcubmV4dCgpLnZhbHVlLCB1
bmRlZmluZWQpOwogCi12YXIgZzIgPSBuZXcgZ2VuKCk7Ci1zaG91bGRCZShnLm5leHQoKS52YWx1
ZSwgdW5kZWZpbmVkKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICB2YXIgZzIgPSBuZXcgZ2Vu
KCk7Cit9LCBgVHlwZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVh
dGluZyAnbmV3IGdlbigpJylgKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267984</attachid>
            <date>2015-12-29 05:57:10 -0800</date>
            <delta_ts>2015-12-29 11:50:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152383-20151229225634.patch</filename>
            <type>text/plain</type>
            <size>1615</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGUzZTdmZjMwMTQ4NjJiNDBjOTAyOTg5YjRlNDE5YzdhYjlhYTI4Li43YWIyZDczZmI3YTkzMGVi
MmI4ODM2NzhjNjFhYzYyOTc1Y2E3MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxNCBAQAogMjAxNS0xMi0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBVbnJldmlld2VkLCByZWxheCBsaW1pdGF0aW9uIGluIG9wZXJhdGlv
bkNyZWF0ZVRoaXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjM4MworCisgICAgICAgIFVucmV2aWV3ZWQuIG9wZXJhdGlvbkNyZWF0ZVRoaXMgbm93
IGNhbiBiZSBjYWxsZWQgd2l0aCBub24gY29uc3RydWN0aWJsZSBmdW5jdGlvbi4KKworICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKworMjAxNS0xMi0yOSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbRVM2XVtFUzddIERyb3AgQ29uc3Ry
dWN0YWJpbGl0eSBvZiBnZW5lcmF0b3IgZnVuY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjM4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBjOTY0ZWU0NmJkNzkzZWQxOGNiYTAxYzBhZWM1
MDFhMzYyZDQ4MzZjLi5hNmQ2MGFkNTRlZWNlYzM4NzkzZjIzOWEzYjE3MDNhMDFjYTE5MWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE2NSwx
MSArMTY1LDYgQEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogY29uc3RydWN0b3IKICAgICBWTSYgdm0gPSBleGVjLT52
bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Ci0gICAg
QVNTRVJUKGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5tZXRob2RUYWJsZSh2bSkt
PmdldENvbnN0cnVjdERhdGEoanNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciksIGNvbnN0
cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7Ci0jZW5kaWYKLSAgICAKICAgICByZXR1cm4g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rv
ciktPnJhcmVEYXRhKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+YWxsb2NhdGlvblByb2ZpbGUoKS0+
c3RydWN0dXJlKCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>