<?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>114768</bug_id>
          
          <creation_ts>2013-04-17 14:59:20 -0700</creation_ts>
          <short_desc>Automate generation of toJS function for classes that need to report extra memory usage</short_desc>
          <delta_ts>2013-04-17 17:53:41 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>877508</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 14:59:20 -0700</bug_when>
    <thetext>Automate generation of toJS function for classes that need to report extra memory usage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877510</commentid>
    <comment_count>1</comment_count>
      <attachid>198614</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 15:03:48 -0700</bug_when>
    <thetext>Created attachment 198614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877517</commentid>
    <comment_count>2</comment_count>
      <attachid>198614</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-17 15:15:22 -0700</bug_when>
    <thetext>Comment on attachment 198614
Patch

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

r=me

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:528
&gt; +        typedef char YesType;

Let&apos;s call this HasMemoryCostMemberFunction.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:544
&gt; +        static NoType memoryCostCheck(U*, TypeChecker&lt;void (BaseMixin::*)(), &amp;U::memoryCost&gt;* = 0);
&gt; +        static YesType memoryCostCheck(...);

Let&apos;s call these dummy.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2718
&gt; +template &lt;typename T, bool hasReportCostFunction = HasMemoryCost&lt;T&gt;::value &gt; struct ReportCost;

Let&apos;s call this &quot;template&lt;typename T, bool hasMemoryCostMemberFunction = HasMemoryCostMemberFunction&lt;T&gt;::value&gt; struct ReportMemoryCost&quot;.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2720
&gt; +    static void reportExtraCost(ExecState* exec, T* impl)

Let&apos;s call this reportMemoryCost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877534</commentid>
    <comment_count>3</comment_count>
      <attachid>198614</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-17 15:40:32 -0700</bug_when>
    <thetext>Comment on attachment 198614
Patch

Attachment 198614 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/102507</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877538</commentid>
    <comment_count>4</comment_count>
      <attachid>198621</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 15:46:11 -0700</bug_when>
    <thetext>Created attachment 198621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877550</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 16:07:53 -0700</bug_when>
    <thetext>Just making sure that i haven&apos;t horned windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877574</commentid>
    <comment_count>6</comment_count>
      <attachid>198621</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 16:52:37 -0700</bug_when>
    <thetext>Comment on attachment 198621
Patch

Committed r148648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877585</commentid>
    <comment_count>7</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-04-17 17:49:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Just making sure that i haven&apos;t horned windows

Unfortunately it would seem that another build failure was masking this one, or something along those lines:

http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/47641/steps/compile-webkit/logs/stdio

Any idea how to fix it?

I&apos;ve tried a clean build, also curious that one bot (The opensource debug builder) seems to be okay with the change...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877586</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-04-17 17:53:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Just making sure that i haven&apos;t horned windows
&gt; 
&gt; Unfortunately it would seem that another build failure was masking this one, or something along those lines:
&gt; 
&gt; http://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/47641/steps/compile-webkit/logs/stdio
&gt; 
&gt; Any idea how to fix it?
&gt; 
&gt; I&apos;ve tried a clean build, also curious that one bot (The opensource debug builder) seems to be okay with the change...

The bot seems to be trying to share the definition of ReportMemoryCost between different JS bindings files, has someone decided to allinonefile them?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198614</attachid>
            <date>2013-04-17 15:03:48 -0700</date>
            <delta_ts>2013-04-17 15:46:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114768-20130417150319.patch</filename>
            <type>text/plain</type>
            <size>18435</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZiZTk5ZWJiNWJkNTli
YWEyMTc0YTdhOTY2YmVhMWEzZTY1MmM5NC4uMzMwNGUyMmM2Yzc0MzRmYzRiZTI1N2JlZTYwZjky
OTNmODYzYWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA0LTE3ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQXV0b21hdGUgZ2VuZXJhdGlv
biBvZiB0b0pTIGZ1bmN0aW9uIGZvciBjbGFzc2VzIHRoYXQgbmVlZCB0byByZXBvcnQgZXh0cmEg
bWVtb3J5IHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTQ3NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBPbmx5IHJlYWxseSB1c2VkIGJ5IEF1ZGlvQnVmZmVyIGZvciBub3cuICBUaGUgb3RoZXIg
Y2xhc3NlcyB0aGF0IG5lZWQgaXQgY2FuIGJlCisgICAgICAgIHRyaXZpYWxseSByZWZhY3RvcmVk
IGF0IGEgbGF0ZXIgZGF0ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChIYXNNZW1vcnlDb3N0KToKKyAgICAgICAgKE5vVHlwZSk6CisgICAgICAgIChC
YXNlTWl4aW4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisKIDIwMTMtMDQtMTcgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3
ZWQgV2luZG93cyBidWlsZGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5pZGwKaW5kZXggY2JkYzQwY2UzYzVmNTYxYThlYWQwZTEyYTYzY2QyNmYz
NTJjOWE5Zi4uM2MxYTY0NGM5ZTY2YjAwODc2N2JhNTA2ZGJhODBiOTdlMTZkOWU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKQEAgLTI4
LDcgKzI4LDYgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBDdXN0b21U
b0pTT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIEF1
ZGlvQnVmZmVyIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7IC8vIGluIHNh
bXBsZS1mcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9CdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1
ZmZlckN1c3RvbS5jcHAKaW5kZXggNmI3NTMxOGE1NDQ2N2M4MzQxMjFjMTM4ZTNkZTQ3MGJjNGFh
ZWQyNC4uZmJiOTEyYTEzM2U4MWEwYzU5NThkZGMyMzNjZjIyZmFiNjU1ZDZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAKQEAg
LTM0LDIyICszNCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQXVkaW9CdWZmZXIqIGF1ZGlvQnVmZmVyKQotewotICAgIGlmICghYXVkaW9C
dWZmZXIpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKLQotICAgIEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBhdWRpb0J1ZmZlcik7
Ci0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEF1ZGlvQnVmZmVyLCBh
dWRpb0J1ZmZlcik7Ci0KLSAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChh
dWRpb0J1ZmZlci0+bWVtb3J5Q29zdCgpKTsKLQotICAgIHJldHVybiB3cmFwcGVyOwotfQotCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAppbmRleCAxNWFlMDk4M2VjM2VmODAxNjI2MmE1MDYxMDg5ZTE4ODgx
N2VlOTc2Li5mZDFkMzE1YjcyM2EzMDFiYWFiNDg4YTYwNDVkZWZhZDUzNjdjMGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNTIzLDYgKzUyMywzMCBA
QCBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGNsYXNzIEhhc01lbW9yeUNvc3QgeworICAgICAgICB0
eXBlZGVmIGNoYXIgWWVzVHlwZTsKKyAgICAgICAgc3RydWN0IE5vVHlwZSB7CisgICAgICAgICAg
ICBjaGFyIHBhZGRpbmdbOF07CisgICAgICAgIH07CisKKyAgICAgICAgc3RydWN0IEJhc2VNaXhp
biB7CisgICAgICAgICAgICB2b2lkIG1lbW9yeUNvc3QoKTsKKyAgICAgICAgfTsKKworICAgICAg
ICBzdHJ1Y3QgQmFzZSA6IHB1YmxpYyBULCBwdWJsaWMgQmFzZU1peGluIHsgfTsKKworICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCBVPiBzdHJ1Y3QKKyAgICAgICAgVHlwZUNoZWNrZXIgeyB9
OworCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgICAgIHN0YXRpYyBOb1R5cGUg
bWVtb3J5Q29zdENoZWNrKFUqLCBUeXBlQ2hlY2tlcjx2b2lkIChCYXNlTWl4aW46OiopKCksICZV
OjptZW1vcnlDb3N0PiogPSAwKTsKKyAgICAgICAgc3RhdGljIFllc1R5cGUgbWVtb3J5Q29zdENo
ZWNrKC4uLik7CisKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gc2l6ZW9mKG1lbW9yeUNvc3RDaGVjayhzdGF0aWNfY2FzdDxCYXNlKj4oMCkpKSA9PSBzaXpl
b2YoWWVzVHlwZSk7CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gSlNET01CaW5kaW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNjA1MDhiMDU3ZTFlNjhhMzQ3ZTk3ZTZhOGUzYzdj
MTg0YmY5NTU1NS4uOWJkN2UzODViMTQ3NjY2ODhhYzM5ZTVkNmIzZDE0NjcxNjMzNzI0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTI3MTQsNiArMjcxNCwyMSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqICR7dnRh
YmxlTmFtZUdudX1bXTsgfQogI2VuZGlmCiAjZW5kaWYKIEVORAorcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlv
biA9IEhhc01lbW9yeUNvc3Q8VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2
b2lkIHJlcG9ydEV4dHJhQ29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgeworICAg
ICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlDb3N0
KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8
VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiwg
VCopCisgICAgeworICAgIH0KK307CitFTkQKKwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCAkaW1wbFR5cGUqIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKQEAg
LTI3NTUsNiArMjc3MCw3IEBAIEVORAogICAgIC8vIGF0dHJpYnV0ZSB0byAkaW50ZXJmYWNlTmFt
ZS4KICAgICBDT01QSUxFX0FTU0VSVCghX19pc19wb2x5bW9ycGhpYygkaW1wbFR5cGUpLCAke2lt
cGxUeXBlfV9pc19wb2x5bW9ycGhpY19idXRfaWRsX2NsYWltc19ub3RfdG9fYmUpOwogI2VuZGlm
CisgICAgUmVwb3J0Q29zdDwkaW1wbFR5cGU+OjpyZXBvcnRFeHRyYUNvc3QoZXhlYywgaW1wbCk7
CiBFTkQKIAogICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAppbmRleCBkNThiMjIwYzM0ODNhMmNkMjQ2OWM3NmEwM2UxMDgyZWYz
Y2FhN2YzLi5lZTUzNGI2NGVlNTM2ZDgxMTI3ZDhmMzQ4ODRlNTNiMzc1ZDdhYWI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjQzLDYgKzI0MywxOCBAQCBleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0QWN0aXZlRE9N
T2JqZWN0QFdlYkNvcmVAQAogZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3Jl
MTlUZXN0QWN0aXZlRE9NT2JqZWN0RVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIGJvb2wgaGFzUmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdDxUPjo6
dmFsdWUgPiBzdHJ1Y3QgUmVwb3J0Q29zdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVwb3J0Q29zdDxULCB0cnVlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4
ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkKKyAgICB7CisgICAgICAgIGV4ZWMtPmhlYXAoKS0+cmVw
b3J0RXh0cmFNZW1vcnlDb3N0KGltcGwtPm1lbW9yeUNvc3QoKSk7CisgICAgfQorfTsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0Q29zdDxULCBmYWxzZT4geworICAgIHN0YXRp
YyB2b2lkIHJlcG9ydEV4dHJhQ29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsK
IEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsKQogewogICAgIGlmICgh
aW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDcyNDI1YWZm
YzFiMzMyYTk4NzM5NTc1MzdlZDU4Y2E4YmQ3MmE0ZTUuLjM4NjVkZTNjYjhjMjA4MmEwMzliNmQ2
ZWUxNzgzYzYzMjVkYTUzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cApAQCAtMjI3LDYgKzIyNywxOCBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBf
X2lkZW50aWZpZXIoIj8/XzdUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJAV2ViQ29yZQogZXh0ZXJuICJD
IiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjFUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJFW107
IH0KICNlbmRpZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRD
b3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlDb3N0PFQ+Ojp2YWx1ZSA+IHN0cnVjdCBSZXBvcnRDb3N0
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRDb3N0PFQsIHRydWU+IHsKKyAg
ICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQor
ICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+
bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBS
ZXBvcnRDb3N0PFQsIGZhbHNlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4
ZWNTdGF0ZSosIFQqKQorICAgIHsKKyAgICB9Cit9OwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXN0
b21OYW1lZEdldHRlciogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDg4Y2QxM2ZiOWYwZDZkM2U3ODMxNGEwN2U4MjVkMWU0
MzA1NDFiYy4uYjNhOGZlMDFmYzJhYmM0MzEzYTNjZGJkYjNmYjc3ODJiMWJmZmZjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMjQyLDYgKzI0MiwxOCBAQCBleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0RXZlbnRD
b25zdHJ1Y3RvckBXZWJDb3JlQAogZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJD
b3JlMjBUZXN0RXZlbnRDb25zdHJ1Y3RvckVbXTsgfQogI2VuZGlmCiAjZW5kaWYKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9yeUNvc3Q8
VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFJlcG9ydENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydEV4dHJhQ29z
dChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFwKCkt
PnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgZmFsc2U+IHsKKyAgICBz
dGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiwgVCopCisgICAgeworICAgIH0K
K307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwpCiB7CiAgICAg
aWYgKCFpbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggYTkxYzBkZTVlNjVkZTg2
NmZjMzk0YzQ4M2ExNDhkYTE0MmRlMjdiYi4uMTI4YTE5NDFkYTc2ZWZhZjA5N2IzNTAzNmU3OGE0
N2E4MGQ3MDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0zNDgsNiArMzQ4LDE4
IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rl
c3RFdmVudFRhcmdldEBXZWJDb3JlQEA2QkAiCiBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9a
VFZON1dlYkNvcmUxNVRlc3RFdmVudFRhcmdldEVbXTsgfQogI2VuZGlmCiAjZW5kaWYKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9yeUNv
c3Q8VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IFJlcG9ydENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydEV4dHJh
Q29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFw
KCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgZmFsc2U+IHsKKyAg
ICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiwgVCopCisgICAgeworICAg
IH0KK307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2ZW50VGFyZ2V0KiBpbXBsKQogewogICAgIGlm
ICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggNGExODNhY2JlNjJkNWJiNmRmM2M4
ZDY4NmMxYTdjN2UxYzdiNmY2NS4uMmYwMjc5ZjRkNTcxMTg3NzNmY2ZlYjA2M2M0YTk0ZjU2NzE3
Njc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTE4NCw2ICsxODQsMTggQEAgZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdEV4Y2VwdGlv
bkBXZWJDb3JlQEA2QkAiKVsKIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTEzVGVzdEV4Y2VwdGlvbkVbXTsgfQogI2VuZGlmCiAjZW5kaWYKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9yeUNvc3Q8VD46OnZhbHVl
ID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9y
dENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydEV4dHJhQ29zdChFeGVjU3Rh
dGUqIGV4ZWMsIFQqIGltcGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4
dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9p
ZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiwgVCopCisgICAgeworICAgIH0KK307CiBKU0M6
OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVzdEV4Y2VwdGlvbiogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCmluZGV4IGFiOGJjMzk5NzliNjg2OWI3MWJhOWQ3YWU3ZjE5NWEyOGIz
MDY3NmMuLjk0OTVkOTNhMTcyZGFjZTM4MTQ1OGQ5YWRmOTkzZDc0ZDZhYmM4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbnRlcmZhY2UuY3BwCkBAIC00OTksNiArNDk5LDE4IEBAIHZvaWQgSlNUZXN0SW50ZXJmYWNl
T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBj
b250CiAgICAganNUZXN0SW50ZXJmYWNlLT5yZWxlYXNlSW1wbCgpOwogfQogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlDb3N0PFQ+
Ojp2YWx1ZSA+IHN0cnVjdCBSZXBvcnRDb3N0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZXBvcnRDb3N0PFQsIHRydWU+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3Qo
RXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgpLT5y
ZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9OwordGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRDb3N0PFQsIGZhbHNlPiB7CisgICAgc3Rh
dGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4ZWNTdGF0ZSosIFQqKQorICAgIHsKKyAgICB9Cit9
OwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RJbnRlcmZhY2UqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBs
KQpAQCAtNTExLDYgKzUyMyw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0SW50CiAgICAgLy8gYXR0
cmlidXRlIHRvIFRlc3RJbnRlcmZhY2UuCiAgICAgQ09NUElMRV9BU1NFUlQoIV9faXNfcG9seW1v
cnBoaWMoVGVzdEludGVyZmFjZSksIFRlc3RJbnRlcmZhY2VfaXNfcG9seW1vcnBoaWNfYnV0X2lk
bF9jbGFpbXNfbm90X3RvX2JlKTsKICNlbmRpZgorICAgIFJlcG9ydENvc3Q8VGVzdEludGVyZmFj
ZT46OnJlcG9ydEV4dHJhQ29zdChleGVjLCBpbXBsKTsKICAgICByZXR1cm4gY3JlYXRlTmV3V3Jh
cHBlcjxKU1Rlc3RJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCAyOGM5MzAy
NWI0ZTU3YmRhZTk3NGY1ZWMwNDhjMjI1MDk3NDQyNTFiLi5lMjdkNTc3M2RlZjk4NmI2M2VkNGEy
NGFhODA0MDhmYWYzNThhNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCkBAIC0yMDUsNiArMjA1LDE4IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9p
ZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQFdl
CiBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNlRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyRVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IGJvb2wgaGFzUmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdDxUPjo6dmFsdWUgPiBz
dHJ1Y3QgUmVwb3J0Q29zdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0Q29z
dDxULCB0cnVlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4ZWNTdGF0ZSog
ZXhlYywgVCogaW1wbCkKKyAgICB7CisgICAgICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFN
ZW1vcnlDb3N0KGltcGwtPm1lbW9yeUNvc3QoKSk7CisgICAgfQorfTsKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgUmVwb3J0Q29zdDxULCBmYWxzZT4geworICAgIHN0YXRpYyB2b2lkIHJl
cG9ydEV4dHJhQ29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsKIEpTQzo6SlNW
YWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCkKIHsKICAgICBpZiAoIWlt
cGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDU1ZjU1NjA1MzZj
YWI0YzRhZjU4NTIzYTI1YjdkYzRiM2JkZTVkZS4uYjEzZTc0ZTQ0ZmE3OTZkN2ZkMzNmYzJlODll
YmJhODc4M2RhNjExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAt
MjE5LDYgKzIxOSwxOCBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50
aWZpZXIoIj8/XzdUZXN0TmFtZWRDb25zdHJ1Y3RvckBXZWJDb3JlQAogZXh0ZXJuICJDIiB7IGV4
dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0TmFtZWRDb25zdHJ1Y3RvckVbXTsgfQogI2Vu
ZGlmCiAjZW5kaWYKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5j
dGlvbiA9IEhhc01lbW9yeUNvc3Q8VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRp
YyB2b2lkIHJlcG9ydEV4dHJhQ29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgewor
ICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlD
b3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENv
c3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRl
KiwgVCopCisgICAgeworICAgIH0KK307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE5hbWVkQ29uc3Ry
dWN0b3IqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxZjJiNTFlMzkw
OWY1NjNhMTI0MDZiODkwNmE1NGI0YjQzOGZlMGE4Li4zYjg3ZDYxMWI2NjcwMGZjZThiNTEyYmI3
ZDA4MjM4ZGIwZmE0YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzA4OSw2ICszMDg5LDE4IEBAIGV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPYmpAV2Vi
Q29yZUBANkJAIilbXSkoKTsKIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTdUZXN0T2JqRVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJv
b2wgaGFzUmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdDxUPjo6dmFsdWUgPiBzdHJ1
Y3QgUmVwb3J0Q29zdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0Q29zdDxU
LCB0cnVlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4ZWNTdGF0ZSogZXhl
YywgVCogaW1wbCkKKyAgICB7CisgICAgICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1v
cnlDb3N0KGltcGwtPm1lbW9yeUNvc3QoKSk7CisgICAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUmVwb3J0Q29zdDxULCBmYWxzZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9y
dEV4dHJhQ29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1
ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBUZXN0T2JqKiBpbXBsKQogewogICAgIGlmICghaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAxMDg5NjY3MDY0NWQ4OTZiZDljZTY4
Njg2Yzk0MTUwMjFlYjI3ZDRjLi4wZTY2MTMyMjlkZDc5YTNmZDhlOTNlZDY0NDU5MzQ3Y2M2NmU4
Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBA
IC0yNDksNiArMjQ5LDE4IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRl
bnRpZmllcigiPz9fN1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQFdlCiBleHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUyNlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRVtd
OyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaGFzUmVwb3J0
Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdDxUPjo6dmFsdWUgPiBzdHJ1Y3QgUmVwb3J0Q29z
dDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0Q29zdDxULCB0cnVlPiB7Cisg
ICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkK
KyAgICB7CisgICAgICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltcGwt
Pm1lbW9yeUNvc3QoKSk7CisgICAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVwb3J0Q29zdDxULCBmYWxzZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydEV4dHJhQ29zdChF
eGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4
IDYyYmU1YTEzM2IzNGU4MTUyZjQ1Y2NiMzZiMjliNmM5Yjg3MjY1MTYuLjdkZjU3MjFlYzhhOWFj
NzdlNmJiMTJmODA5ZmZlZTI1YjY5NTRlZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zOTcsNiArMzk3LDE4IEBA
IGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlCiBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZO
N1dlYkNvcmUzNFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VFW107IH0KICNlbmRp
ZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRDb3N0RnVuY3Rp
b24gPSBIYXNNZW1vcnlDb3N0PFQ+Ojp2YWx1ZSA+IHN0cnVjdCBSZXBvcnRDb3N0OwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRDb3N0PFQsIHRydWU+IHsKKyAgICBzdGF0aWMg
dm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAg
ICAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29z
dCgpKTsKKyAgICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRDb3N0
PFQsIGZhbHNlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXh0cmFDb3N0KEV4ZWNTdGF0ZSos
IFQqKQorICAgIHsKKyAgICB9Cit9OwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKaW5kZXggZmZiZTIwNzY5Zjk4YTQyMGJjNjBjZDUyZDBiZjdiOWQ3ZTRiYjdmMi4uMWMx
YzNjM2FjMGUxYTMyOWQ1YWIzYWVmNWRlYTIwMjU3MzUxODVkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
Y3BwCkBAIC02MzUsNiArNjM1LDE4IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0
IF9faWRlbnRpZmllcigiPz9fN1Rlc3RUeXBlZGVmc0BXZWJDb3JlQEA2QkAiKVtdCiBleHRlcm4g
IkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxMlRlc3RUeXBlZGVmc0VbXTsgfQogI2Vu
ZGlmCiAjZW5kaWYKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5j
dGlvbiA9IEhhc01lbW9yeUNvc3Q8VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydENvc3Q7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRp
YyB2b2lkIHJlcG9ydEV4dHJhQ29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgewor
ICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlD
b3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydENv
c3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRFeHRyYUNvc3QoRXhlY1N0YXRl
KiwgVCopCisgICAgeworICAgIH0KK307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdFR5cGVkZWZzKiBp
bXBsKQogewogICAgIGlmICghaW1wbCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198621</attachid>
            <date>2013-04-17 15:46:11 -0700</date>
            <delta_ts>2013-04-17 16:52:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114768-20130417154543.patch</filename>
            <type>text/plain</type>
            <size>23618</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZiZTk5ZWJiNWJkNTli
YWEyMTc0YTdhOTY2YmVhMWEzZTY1MmM5NC4uMzMwNGUyMmM2Yzc0MzRmYzRiZTI1N2JlZTYwZjky
OTNmODYzYWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTA0LTE3ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgQXV0b21hdGUgZ2VuZXJhdGlv
biBvZiB0b0pTIGZ1bmN0aW9uIGZvciBjbGFzc2VzIHRoYXQgbmVlZCB0byByZXBvcnQgZXh0cmEg
bWVtb3J5IHVzYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTQ3NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBPbmx5IHJlYWxseSB1c2VkIGJ5IEF1ZGlvQnVmZmVyIGZvciBub3cuICBUaGUgb3RoZXIg
Y2xhc3NlcyB0aGF0IG5lZWQgaXQgY2FuIGJlCisgICAgICAgIHRyaXZpYWxseSByZWZhY3RvcmVk
IGF0IGEgbGF0ZXIgZGF0ZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXIuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9CdWZmZXJDdXN0b20uY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChIYXNNZW1vcnlDb3N0KToKKyAgICAgICAgKE5vVHlwZSk6CisgICAgICAgIChC
YXNlTWl4aW4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisKIDIwMTMtMDQtMTcgIENzYWJh
IE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3
ZWQgV2luZG93cyBidWlsZGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5pZGwKaW5kZXggY2JkYzQwY2UzYzVmNTYxYThlYWQwZTEyYTYzY2QyNmYz
NTJjOWE5Zi4uM2MxYTY0NGM5ZTY2YjAwODc2N2JhNTA2ZGJhODBiOTdlMTZkOWU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5pZGwKQEAgLTI4
LDcgKzI4LDYgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKLSAgICBDdXN0b21U
b0pTT2JqZWN0LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIEF1
ZGlvQnVmZmVyIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsZW5ndGg7IC8vIGluIHNh
bXBsZS1mcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVk
aW9CdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1
ZmZlckN1c3RvbS5jcHAKaW5kZXggNmI3NTMxOGE1NDQ2N2M4MzQxMjFjMTM4ZTNkZTQ3MGJjNGFh
ZWQyNC4uZmJiOTEyYTEzM2U4MWEwYzU5NThkZGMyMzNjZjIyZmFiNjU1ZDZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlckN1c3RvbS5jcHAKQEAg
LTM0LDIyICszNCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQXVkaW9CdWZmZXIqIGF1ZGlvQnVmZmVyKQotewotICAgIGlmICghYXVkaW9C
dWZmZXIpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKLQotICAgIEpTRE9NV3JhcHBlciogd3Jh
cHBlciA9IGdldENhY2hlZFdyYXBwZXIoY3VycmVudFdvcmxkKGV4ZWMpLCBhdWRpb0J1ZmZlcik7
Ci0gICAgaWYgKHdyYXBwZXIpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotCi0gICAgd3JhcHBl
ciA9IENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEF1ZGlvQnVmZmVyLCBh
dWRpb0J1ZmZlcik7Ci0KLSAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChh
dWRpb0J1ZmZlci0+bWVtb3J5Q29zdCgpKTsKLQotICAgIHJldHVybiB3cmFwcGVyOwotfQotCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAppbmRleCAxNWFlMDk4M2VjM2VmODAxNjI2MmE1MDYxMDg5ZTE4ODgx
N2VlOTc2Li5mNWI2Y2M4YWUxOTM5MzE5ZjcyZmNkNGEwODEyZDg0YjNkNjVkMTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtNTIzLDYgKzUyMywzMCBA
QCBjbGFzcyBET01TdHJpbmdMaXN0OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIGNsYXNzIEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlv
biB7CisgICAgICAgIHR5cGVkZWYgY2hhciBZZXNUeXBlOworICAgICAgICBzdHJ1Y3QgTm9UeXBl
IHsKKyAgICAgICAgICAgIGNoYXIgcGFkZGluZ1s4XTsKKyAgICAgICAgfTsKKworICAgICAgICBz
dHJ1Y3QgQmFzZU1peGluIHsKKyAgICAgICAgICAgIHNpemVfdCBtZW1vcnlDb3N0KCk7CisgICAg
ICAgIH07CisKKyAgICAgICAgc3RydWN0IEJhc2UgOiBwdWJsaWMgVCwgcHVibGljIEJhc2VNaXhp
biB7IH07CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgVT4gc3RydWN0CisgICAgICAg
IFR5cGVDaGVja2VyIHsgfTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgICAg
ICBzdGF0aWMgTm9UeXBlIGR1bW15KFUqLCBUeXBlQ2hlY2tlcjxzaXplX3QgKEJhc2VNaXhpbjo6
KikoKSwgJlU6Om1lbW9yeUNvc3Q+KiA9IDApOworICAgICAgICBzdGF0aWMgWWVzVHlwZSBkdW1t
eSguLi4pOworCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9
IHNpemVvZihkdW1teShzdGF0aWNfY2FzdDxCYXNlKj4oMCkpKSA9PSBzaXplb2YoWWVzVHlwZSk7
CisgICAgfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNET01CaW5k
aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggNjA1MDhiMDU3ZTFlNjhhMzQ3ZTk3ZTZhOGUzYzdjMTg0YmY5NTU1NS4u
NzgyYjdhMTE3YmQ4MGU2YzU0NGI0YjI2ODIyZDc0OWJkMzdlYTg5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI3MTQs
NiArMjcxNCwyMSBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqICR7dnRhYmxlTmFtZUdudX1b
XTsgfQogI2VuZGlmCiAjZW5kaWYKIEVORAorcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9y
eUNvc3RNZW1iZXJGdW5jdGlvbjxUPjo6dmFsdWUgPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDxULCB0cnVlPiB7
CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGlt
cGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChp
bXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IFJlcG9ydE1lbW9yeUNvc3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRN
ZW1vcnlDb3N0KEV4ZWNTdGF0ZSosIFQqKQorICAgIHsKKyAgICB9Cit9OworRU5ECisKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgJGltcGxUeXBlKiBpbXBsKVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCA8PEVORCk7CkBAIC0yNzU2LDYgKzI3NzEsOSBAQCBFTkQKICAgICBDT01QSUxF
X0FTU0VSVCghX19pc19wb2x5bW9ycGhpYygkaW1wbFR5cGUpLCAke2ltcGxUeXBlfV9pc19wb2x5
bW9ycGhpY19idXRfaWRsX2NsYWltc19ub3RfdG9fYmUpOwogI2VuZGlmCiBFTkQKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICBSZXBvcnRNZW1vcnlDb3N0PCRpbXBsVHlw
ZT46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7CitFTkQKIAogICAgICAgICBpZiAoJHN2
Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0
dXJuIGNyZWF0ZU5ld1dyYXBwZXI8JGNsYXNzTmFtZSwgJGltcGxUeXBlPihleGVjLCBnbG9iYWxP
YmplY3QsIGltcGwpO1xuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4
IGQ1OGIyMjBjMzQ4M2EyY2QyNDY5Yzc2YTAzZTEwODJlZjNjYWE3ZjMuLjgzYTNmYTcxYzFlNjM0
MTdiNzkwMjE3ZDQ4ZDI4ZjUxOTJlYzZiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCkBAIC0yNDMsNiArMjQzLDE4IEBAIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNv
bnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RBY3RpdmVET01PYmplY3RAV2ViQ29yZUBACiBleHRl
cm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dlYkNvcmUxOVRlc3RBY3RpdmVET01PYmplY3RF
W107IH0KICNlbmRpZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBv
cnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVlID4g
c3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJl
cG9ydE1lbW9yeUNvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNv
c3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgp
LT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9Owor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNlPiB7
CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7
CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsKQog
ewogICAgIGlmICghaW1wbCkKQEAgLTI2Nyw2ICsyNzksNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dEFjdAogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRl
IHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1
YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKKyAgICBS
ZXBvcnRNZW1vcnlDb3N0PFRlc3RBY3RpdmVET01PYmplY3Q+OjpyZXBvcnRNZW1vcnlDb3N0KGV4
ZWMsIGltcGwpOwogICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdEFjdGl2ZURPTU9i
amVjdD4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5jcHAKaW5kZXggNzI0MjVhZmZjMWIzMzJhOTg3Mzk1NzUzN2VkNThjYThi
ZDcyYTRlNS4uNzY1ZGU1Y2Y5NGE0YTQ2MmM0MzZmYjFlOTE1NjFkODRiNzE4YzEwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0yMjcsNiArMjI3LDE4IEBAIGV4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RDdXN0
b21OYW1lZEdldHRlckBXZWJDb3JlCiBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQqIF9aVFZON1dl
YkNvcmUyMVRlc3RDdXN0b21OYW1lZEdldHRlckVbXTsgfQogI2VuZGlmCiAjZW5kaWYKK3RlbXBs
YXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9yeUNv
c3RNZW1iZXJGdW5jdGlvbjxUPjo6dmFsdWUgPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDsKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDxULCB0cnVlPiB7Cisg
ICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwp
CisgICAgeworICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBs
LT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IFJlcG9ydE1lbW9yeUNvc3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRNZW1v
cnlDb3N0KEV4ZWNTdGF0ZSosIFQqKQorICAgIHsKKyAgICB9Cit9OwogSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCkBAIC0yNTEs
NiArMjYzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RDdXMKICAgICAvLyBieSBhZGRpbmcgdGhl
IFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZp
bml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3Rl
ZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCisgICAgUmVwb3J0TWVtb3J5Q29zdDxUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI+OjpyZXBvcnRNZW1vcnlDb3N0KGV4ZWMsIGltcGwpOwogICAgIHJldHVybiBj
cmVhdGVOZXdXcmFwcGVyPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPihleGVjLCBnbG9iYWxPYmpl
Y3QsIGltcGwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
ZDg4Y2QxM2ZiOWYwZDZkM2U3ODMxNGEwN2U4MjVkMWU0MzA1NDFiYy4uYzdhN2M5ZWY1ZjA0YTI4
MTc0Y2Y5ZDViNmQwZmU2ZWJmNjRhNzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVj
dG9yLmNwcApAQCAtMjQyLDYgKzI0MiwxOCBAQCBleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpj
b25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0RXZlbnRDb25zdHJ1Y3RvckBXZWJDb3JlQAogZXh0
ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckVbXTsgfQogI2VuZGlmCiAjZW5kaWYKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1Jl
cG9ydENvc3RGdW5jdGlvbiA9IEhhc01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbjxUPjo6dmFsdWUg
PiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVwb3J0TWVtb3J5Q29zdDxULCB0cnVlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5
Q29zdChFeGVjU3RhdGUqIGV4ZWMsIFQqIGltcGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFw
KCktPnJlcG9ydEV4dHJhTWVtb3J5Q29zdChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q8VCwgZmFsc2U+
IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlDb3N0KEV4ZWNTdGF0ZSosIFQqKQorICAg
IHsKKyAgICB9Cit9OwogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBs
KQogewogICAgIGlmICghaW1wbCkKQEAgLTI2Niw2ICsyNzgsNyBAQCBKU0M6OkpTVmFsdWUgdG9K
UyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGVzdEV2ZQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmli
dXRlIHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChh
Y3R1YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKKyAg
ICBSZXBvcnRNZW1vcnlDb3N0PFRlc3RFdmVudENvbnN0cnVjdG9yPjo6cmVwb3J0TWVtb3J5Q29z
dChleGVjLCBpbXBsKTsKICAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yPihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcAppbmRleCBhOTFjMGRlNWU2NWRlODY2ZmMzOTRjNDgzYTE0OGRhMTQyZGUyN2Ji
Li41ZTQzOTU0NmNjODBlOWM2OWRlYmMzMjQ4ZmMwZjA5ZDFlYTUzMTUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKQEAgLTM0OCw2ICszNDgsMTggQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2
b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdEV2ZW50VGFyZ2V0QFdlYkNvcmVAQDZC
QCIKIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTE1VGVzdEV2ZW50VGFy
Z2V0RVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaGFz
UmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uPFQ+Ojp2YWx1
ZSA+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZXBvcnRNZW1vcnlDb3N0PFQsIHRydWU+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRNZW1v
cnlDb3N0KEV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkKKyAgICB7CisgICAgICAgIGV4ZWMtPmhl
YXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltcGwtPm1lbW9yeUNvc3QoKSk7CisgICAgfQor
fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDxULCBmYWxz
ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNvc3QoRXhlY1N0YXRlKiwgVCopCisg
ICAgeworICAgIH0KK307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEV2ZW50VGFyZ2V0KiBpbXBsKQog
ewogICAgIGlmICghaW1wbCkKQEAgLTM3Miw2ICszODQsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dEV2ZQogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRl
IHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1
YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKKyAgICBS
ZXBvcnRNZW1vcnlDb3N0PFRlc3RFdmVudFRhcmdldD46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywg
aW1wbCk7CiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0RXZlbnRUYXJnZXQ+KGV4
ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXgg
NGExODNhY2JlNjJkNWJiNmRmM2M4ZDY4NmMxYTdjN2UxYzdiNmY2NS4uYzlkNWE2ZDJkODM1ODA1
Zjg1ZjIzNDc3Nzk4NDEyYzkzYzhmYzFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTE4
NCw2ICsxODQsMTggQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlm
aWVyKCI/P183VGVzdEV4Y2VwdGlvbkBXZWJDb3JlQEA2QkAiKVsKIGV4dGVybiAiQyIgeyBleHRl
cm4gdm9pZCogX1pUVk43V2ViQ29yZTEzVGVzdEV4Y2VwdGlvbkVbXTsgfQogI2VuZGlmCiAjZW5k
aWYKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIGhhc1JlcG9ydENvc3RGdW5jdGlvbiA9IEhh
c01lbW9yeUNvc3RNZW1iZXJGdW5jdGlvbjxUPjo6dmFsdWUgPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5
Q29zdDsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDxULCB0
cnVlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqIGV4ZWMs
IFQqIGltcGwpCisgICAgeworICAgICAgICBleGVjLT5oZWFwKCktPnJlcG9ydEV4dHJhTWVtb3J5
Q29zdChpbXBsLT5tZW1vcnlDb3N0KCkpOworICAgIH0KK307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q8VCwgZmFsc2U+IHsKKyAgICBzdGF0aWMgdm9pZCBy
ZXBvcnRNZW1vcnlDb3N0KEV4ZWNTdGF0ZSosIFQqKQorICAgIHsKKyAgICB9Cit9OwogSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlc3RFeGNlcHRpb24qIGltcGwpCiB7CiAgICAgaWYgKCFpbXBsKQpAQCAtMjA4
LDYgKzIyMCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhjCiAgICAgLy8gYnkgYWRkaW5nIHRo
ZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8gdGhlIGludGVyZmFjZSBJREwgZGVm
aW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0
ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgorICAgIFJlcG9ydE1lbW9yeUNvc3Q8VGVzdEV4Y2Vw
dGlvbj46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJuIGNyZWF0ZU5l
d1dyYXBwZXI8SlNUZXN0RXhjZXB0aW9uPihleGVjLCBnbG9iYWxPYmplY3QsIGltcGwpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGFiOGJjMzk5NzliNjg2OWI3MWJhOWQ3YWU3ZjE5
NWEyOGIzMDY3NmMuLjNlNmUxY2UxYTZkYjE1NDIwNWExNzQzMjUyMmNlNDk4NDRkYWJiMGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC00OTksNiArNDk5LDE4IEBAIHZvaWQgSlNUZXN0SW50
ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2
b2lkKiBjb250CiAgICAganNUZXN0SW50ZXJmYWNlLT5yZWxlYXNlSW1wbCgpOwogfQogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlD
b3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q8VCwgdHJ1ZT4gewor
ICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBs
KQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1w
bC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVt
b3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0SW50ZXJmYWNlKiBpbXBsKQogewogICAgIGlmICghaW1wbCkKQEAgLTUxMSw2ICs1MjMs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdEludAogICAgIC8vIGF0dHJpYnV0ZSB0byBUZXN0SW50
ZXJmYWNlLgogICAgIENPTVBJTEVfQVNTRVJUKCFfX2lzX3BvbHltb3JwaGljKFRlc3RJbnRlcmZh
Y2UpLCBUZXN0SW50ZXJmYWNlX2lzX3BvbHltb3JwaGljX2J1dF9pZGxfY2xhaW1zX25vdF90b19i
ZSk7CiAjZW5kaWYKKyAgICBSZXBvcnRNZW1vcnlDb3N0PFRlc3RJbnRlcmZhY2U+OjpyZXBvcnRN
ZW1vcnlDb3N0KGV4ZWMsIGltcGwpOwogICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVz
dEludGVyZmFjZT4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDI4YzkzMDI1YjRlNTdiZGFl
OTc0ZjVlYzA0OGMyMjUwOTc0NDI1MWIuLjFjNTAyNjFhNmYyZGY0NWZiMDE1ZmQ5MzFiNWU2OTk2
MThmYmY0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKQEAgLTIwNSw2ICsyMDUsMTggQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3Qg
X19pZGVudGlmaWVyKCI/P183VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJAV2UKIGV4dGVybiAi
QyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTI2VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJFW107IH0KICNlbmRpZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNS
ZXBvcnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVl
ID4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IFJlcG9ydE1lbW9yeUNvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9y
eUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVh
cCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNl
PiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAg
ICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCkBAIC0yMjksNiArMjQxLDcgQEAgSlNDOjpKU1Zh
bHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFRlc3RNZWQKICAgICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9u
IGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9B
U1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2Vu
ZGlmCisgICAgUmVwb3J0TWVtb3J5Q29zdDxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OnJl
cG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7CiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDA1NWY1NTYwNTM2
Y2FiNGM0YWY1ODUyM2EyNWI3ZGM0YjNiZGU1ZGUuLjI0MmNlNzRiMmYwMDUzNjc2NzFmMThmMWE3
NmU5MzgzYzYwNGUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTIxOSw2ICsyMTksMTggQEAgZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVu
dGlmaWVyKCI/P183VGVzdE5hbWVkQ29uc3RydWN0b3JAV2ViQ29yZUAKIGV4dGVybiAiQyIgeyBl
eHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdE5hbWVkQ29uc3RydWN0b3JFW107IH0KICNl
bmRpZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRDb3N0RnVu
Y3Rpb24gPSBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVlID4gc3RydWN0IFJl
cG9ydE1lbW9yeUNvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydE1lbW9y
eUNvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNvc3QoRXhlY1N0
YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRF
eHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9OwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNlPiB7CisgICAgc3Rh
dGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQor
fTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCkKIHsKICAgICBp
ZiAoIWltcGwpCkBAIC0yNDMsNiArMjU1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3ROYW0KICAg
ICAvLyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUg
aW50ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxl
UG9pbnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCisgICAgUmVwb3J0TWVt
b3J5Q29zdDxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1w
bCk7CiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCAxZjJiNTFlMzkw
OWY1NjNhMTI0MDZiODkwNmE1NGI0YjQzOGZlMGE4Li4wYzY0MzkyMjI0YjhmMmU4ODhiZGYzNjk4
MmVkOTE5NWVlYjAxMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMzA4OSw2ICszMDg5LDE4IEBAIGV4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCAoKmNvbnN0IF9faWRlbnRpZmllcigiPz9fN1Rlc3RPYmpAV2Vi
Q29yZUBANkJAIilbXSkoKTsKIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTdUZXN0T2JqRVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJv
b2wgaGFzUmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5Q29zdE1lbWJlckZ1bmN0aW9uPFQ+
Ojp2YWx1ZSA+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIHRydWU+IHsKKyAgICBzdGF0aWMgdm9pZCByZXBv
cnRNZW1vcnlDb3N0KEV4ZWNTdGF0ZSogZXhlYywgVCogaW1wbCkKKyAgICB7CisgICAgICAgIGV4
ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGltcGwtPm1lbW9yeUNvc3QoKSk7Cisg
ICAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVwb3J0TWVtb3J5Q29zdDxU
LCBmYWxzZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNvc3QoRXhlY1N0YXRlKiwg
VCopCisgICAgeworICAgIH0KK307CiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVzdE9iaiogaW1wbCkKIHsK
ICAgICBpZiAoIWltcGwpCkBAIC0zMTEzLDYgKzMxMjUsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dE9iagogICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRl
IHRvIHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1
YWxWVGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKKyAgICBS
ZXBvcnRNZW1vcnlDb3N0PFRlc3RPYmo+OjpyZXBvcnRNZW1vcnlDb3N0KGV4ZWMsIGltcGwpOwog
ICAgIHJldHVybiBjcmVhdGVOZXdXcmFwcGVyPEpTVGVzdE9iaj4oZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbXBsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCmluZGV4IDEwODk2NjcwNjQ1ZDg5NmJkOWNlNjg2ODZjOTQxNTAyMWViMjdkNGMuLjcxZDY4
ZTY0ZTFjOWYzZDVhNzU0ZjUxMzQ2MjYxZGEyOTk4M2NiMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTI0OSw2ICsyNDksMTggQEAgZXh0ZXJu
ICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNAV2UKIGV4dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29y
ZTI2VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNFW107IH0KICNlbmRpZgogI2VuZGlmCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNSZXBvcnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlD
b3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVlID4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q8VCwgdHJ1ZT4gewor
ICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9yeUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBs
KQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1w
bC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVj
dCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNlPiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVt
b3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAgICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0
b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCkBA
IC0yNzMsNiArMjg1LDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RPdmUKICAgICAvLyBieSBhZGRp
bmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNlIElE
TCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9pbnRlciA9PSBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCisgICAgUmVwb3J0TWVtb3J5Q29zdDxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz46OnJlcG9ydE1lbW9yeUNvc3QoZXhlYywgaW1wbCk7CiAg
ICAgcmV0dXJuIGNyZWF0ZU5ld1dyYXBwZXI8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA2MmJlNWExMzNiMzRl
ODE1MmY0NWNjYjM2YjI5YjZjOWI4NzI2NTE2Li4zYTJkNzdmY2QwMWIzZGE3ZGUwZDc3Nzc5M2U3
MTY0NTc0Yjg0NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMzk3LDYgKzM5NywxOCBAQCBleHRlcm4gIkMiIHsg
ZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZQogZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMzRUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlRVtdOyB9CiAjZW5kaWYKICNlbmRpZgordGVt
cGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaGFzUmVwb3J0Q29zdEZ1bmN0aW9uID0gSGFzTWVtb3J5
Q29zdE1lbWJlckZ1bmN0aW9uPFQ+Ojp2YWx1ZSA+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0Owor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIHRydWU+IHsK
KyAgICBzdGF0aWMgdm9pZCByZXBvcnRNZW1vcnlDb3N0KEV4ZWNTdGF0ZSogZXhlYywgVCogaW1w
bCkKKyAgICB7CisgICAgICAgIGV4ZWMtPmhlYXAoKS0+cmVwb3J0RXh0cmFNZW1vcnlDb3N0KGlt
cGwtPm1lbW9yeUNvc3QoKSk7CisgICAgfQorfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgUmVwb3J0TWVtb3J5Q29zdDxULCBmYWxzZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1l
bW9yeUNvc3QoRXhlY1N0YXRlKiwgVCopCisgICAgeworICAgIH0KK307CiBKU0M6OkpTVmFsdWUg
dG9KUyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wbCkKIHsKICAgICBpZiAo
IWltcGwpCkBAIC00MjEsNiArNDMzLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RTZXIKICAgICAv
LyBieSBhZGRpbmcgdGhlIFNraXBWVGFibGVWYWxpZGF0aW9uIGF0dHJpYnV0ZSB0byB0aGUgaW50
ZXJmYWNlIElETCBkZWZpbml0aW9uCiAgICAgUkVMRUFTRV9BU1NFUlQoYWN0dWFsVlRhYmxlUG9p
bnRlciA9PSBleHBlY3RlZFZUYWJsZVBvaW50ZXIpOwogI2VuZGlmCisgICAgUmVwb3J0TWVtb3J5
Q29zdDxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6cmVwb3J0TWVtb3J5Q29z
dChleGVjLCBpbXBsKTsKICAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW1wbCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IGZmYmUyMDc2OWY5OGE0MjBiYzYwY2Q1MmQwYmY3Yjlk
N2U0YmI3ZjIuLjdkODlkYWQ2MzBiZWZjMGJmOGNlMDA4MDQzOTE3NDNmMzU3ODAzZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcApAQCAtNjM1LDYgKzYzNSwxOCBAQCBleHRlcm4gIkMiIHsgZXh0ZXJu
IHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIoIj8/XzdUZXN0VHlwZWRlZnNAV2ViQ29yZUBANkJA
IilbXQogZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMTJUZXN0VHlwZWRl
ZnNFW107IH0KICNlbmRpZgogI2VuZGlmCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBoYXNS
ZXBvcnRDb3N0RnVuY3Rpb24gPSBIYXNNZW1vcnlDb3N0TWVtYmVyRnVuY3Rpb248VD46OnZhbHVl
ID4gc3RydWN0IFJlcG9ydE1lbW9yeUNvc3Q7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IFJlcG9ydE1lbW9yeUNvc3Q8VCwgdHJ1ZT4geworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE1lbW9y
eUNvc3QoRXhlY1N0YXRlKiBleGVjLCBUKiBpbXBsKQorICAgIHsKKyAgICAgICAgZXhlYy0+aGVh
cCgpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW1wbC0+bWVtb3J5Q29zdCgpKTsKKyAgICB9Cit9
OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZXBvcnRNZW1vcnlDb3N0PFQsIGZhbHNl
PiB7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5Q29zdChFeGVjU3RhdGUqLCBUKikKKyAg
ICB7CisgICAgfQorfTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlwZWRlZnMqIGltcGwpCiB7CiAg
ICAgaWYgKCFpbXBsKQpAQCAtNjU5LDYgKzY3MSw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0VHlw
CiAgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUgdG8g
dGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgogICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVhbFZU
YWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKICNlbmRpZgorICAgIFJlcG9y
dE1lbW9yeUNvc3Q8VGVzdFR5cGVkZWZzPjo6cmVwb3J0TWVtb3J5Q29zdChleGVjLCBpbXBsKTsK
ICAgICByZXR1cm4gY3JlYXRlTmV3V3JhcHBlcjxKU1Rlc3RUeXBlZGVmcz4oZXhlYywgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>