<?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>120569</bug_id>
          
          <creation_ts>2013-08-31 21:46:35 -0700</creation_ts>
          <short_desc>[Mac] No need for HardAutorelease, which is same as CFBridgingRelease</short_desc>
          <delta_ts>2013-09-02 11:54:09 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>923385</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-31 21:46:35 -0700</bug_when>
    <thetext>[Mac] Refine the HardAutorelease function and rename it BridgingAutorelease</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923386</commentid>
    <comment_count>1</comment_count>
      <attachid>210225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-31 22:01:03 -0700</bug_when>
    <thetext>Created attachment 210225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923387</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-31 22:03:24 -0700</bug_when>
    <thetext>I wonder if we always have CFBridgingRelease on all Mac and iOS platforms and build environments we support. If so, then maybe we should just replacing HardRelease/BridgingRelease with CFBridgingRelease, adding null checks as needed and not worrying too much about the extra overhead for non-GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923388</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-31 22:03:38 -0700</bug_when>
    <thetext>Attachment 210225 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSValue.mm&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/ObjcRuntimeExtras.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/platform/mac/KURLMac.mm&apos;, u&apos;Source/WebCore/platform/mac/WebCoreNSURLExtras.mm&apos;, u&apos;Source/WebCore/platform/text/mac/StringImplMac.mm&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/Misc/WebNSFileManagerExtras.mm&apos;, u&apos;Source/WebKit/mac/Misc/WebNSURLExtras.mm&apos;, u&apos;Source/WebKit/mac/Plugins/WebBasePluginPackage.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebPDFRepresentation.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Platform/mac/StringUtilities.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKBrowsingContextController.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WKAccessibilityWebPageObject.mm&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/mac/DumpRenderTree.mm&apos;]&quot; exit_code: 1
Source/WTF/wtf/ObjcRuntimeExtras.h:68:  Extra space before [  [whitespace/braces] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923412</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-31 23:18:36 -0700</bug_when>
    <thetext>I think I’ll need Anders’ help to decide whether to keep BridgingAutorelease or just start using CFBridgingRelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923534</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-01 12:10:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I wonder if we always have CFBridgingRelease on all Mac and iOS platforms and build environments we support. If so, then maybe we should just replacing HardRelease/BridgingRelease with CFBridgingRelease, adding null checks as needed and not worrying too much about the extra overhead for non-GC.

Where would we have to add null checks?

(In reply to comment #4)
&gt; I think I’ll need Anders’ help to decide whether to keep BridgingAutorelease or just start using CFBridgingRelease.

I think we should just use CFBridgingRelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923539</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-01 12:17:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #2)
&gt; &gt; I wonder if we always have CFBridgingRelease on all Mac and iOS platforms and build environments we support. If so, then maybe we should just replacing HardRelease/BridgingRelease with CFBridgingRelease, adding null checks as needed and not worrying too much about the extra overhead for non-GC.
&gt; 
&gt; Where would we have to add null checks?

I don’t know. That’s the problem. It requires studying each call site.

If any of the call sites are passing in something that can be null we’d need a null check. I don’t know, for example, which create functions can fail and return null and which ones can’t.

&gt; (In reply to comment #4)
&gt; &gt; I think I’ll need Anders’ help to decide whether to keep BridgingAutorelease or just start using CFBridgingRelease.
&gt; 
&gt; I think we should just use CFBridgingRelease.

The three issues are:

1) Annoying to pay for CFMakeCollectable on non-GC platforms like iOS.
2) Not sure CFBridgingRelease is present on all Mac and iOS platforms we compile WebKit for.
3) Not sure where to add null checks.

I’ll start putting up patches that use CFBridgingRelease and I won’t rename HardAutorelease -- I’ll delete it instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923542</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-01 12:23:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The three issues are:
&gt; 
&gt; 1) Annoying to pay for CFMakeCollectable on non-GC platforms like iOS.

&gt; 2) Not sure CFBridgingRelease is present on all Mac and iOS platforms we compile WebKit for.

It is present on Lion and newer AFIK.

&gt; 3) Not sure where to add null checks.

I still don&apos;t understand where we&apos;d need null checks now where we wouldn&apos;t before. It seems like both CFBridgingRetain and CFBridgingRelease handle null just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923544</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-01 12:27:47 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; It seems like both CFBridgingRetain and CFBridgingRelease handle null just fine.

The non-ARC version of CFBridgingRelease calls CFMakeCollectable unconditionally. I believe that won’t work on a null pointer. Am I wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923550</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-09-01 12:48:58 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; It seems like both CFBridgingRetain and CFBridgingRelease handle null just fine.
&gt; 
&gt; The non-ARC version of CFBridgingRelease calls CFMakeCollectable unconditionally. I believe that won’t work on a null pointer. Am I wrong?

Despite what our documentation says about CFMakeCollectable(), the current implementation of that function handles NULL correctly. I don&apos;t know if that&apos;s true on all the platforms we need to support, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923551</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-01 12:50:03 -0700</bug_when>
    <thetext>Party time!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923561</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-01 14:09:03 -0700</bug_when>
    <thetext>New title, new approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923562</commentid>
    <comment_count>12</comment_count>
      <attachid>210256</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-01 14:14:25 -0700</bug_when>
    <thetext>Created attachment 210256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923563</commentid>
    <comment_count>13</comment_count>
      <attachid>210256</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2013-09-01 16:18:35 -0700</bug_when>
    <thetext>Comment on attachment 210256
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        [Mac] No need for HardAutorelease, which is same as CFBridgingRelease

which is *the* same?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923785</commentid>
    <comment_count>14</comment_count>
      <attachid>210256</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-02 11:54:05 -0700</bug_when>
    <thetext>Comment on attachment 210256
Patch

Clearing flags on attachment: 210256

Committed r154963: &lt;http://trac.webkit.org/changeset/154963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923786</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-02 11:54:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210225</attachid>
            <date>2013-08-31 22:01:03 -0700</date>
            <delta_ts>2013-09-01 14:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120569-20130831220102.patch</filename>
            <type>text/plain</type>
            <size>24008</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDg0MmFlMzhmZGZlYTA3MTJmNWU2OWU0MjQzMmU2YjRkODhjMjY4Li5iYjc3ODk2ZDI1OTIyNGI5
ZmMxYzkyOGM1NDhhZGY4OGMwOGQ1OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gUmVmaW5lIHRoZSBIYXJkQXV0b3JlbGVhc2UgZnVuY3Rpb24gYW5kIHJl
bmFtZSBpdCBCcmlkZ2luZ0F1dG9yZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0
cmluZyk6IFJlbmFtZSB0byBCcmlkZ2luZ0F1dG9yZWxlYXNlLgorCiAyMDEzLTA4LTMwICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgY29kZSBiZWhp
bmQgRU5BQkxFKERJQUxPR19FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhYjViNmRlNjRjNjgxM2JjMTVmN2U4ZGE5
ZDU3MTgzYjIxNzIzZmQxLi4zZjU5ODkxZjRmYjdjZDdiNThiMDRmY2NiM2MxM2ZhYTg5YmQ2OWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA4LTMxICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBSZWZpbmUgdGhlIEhhcmRBdXRvcmVsZWFzZSBmdW5j
dGlvbiBhbmQgcmVuYW1lIGl0IEJyaWRnaW5nQXV0b3JlbGVhc2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL09iamNSdW50aW1lRXh0cmFzLmg6
IEFkZGVkIGEgRklYTUUgYWJvdXQgdGhpcyBmaWxlJ3MgcG9vciBuYW1lLgorICAgICAgICAod3Rm
T2JqY01zZ1NlbmQpOiBEcm9wcGVkIHRoZSB1c2Ugb2YgYWJicmV2aWF0aW9ucyBpbiBsb2NhbCBj
bGFzcyBhbmQgYXJndW1lbnQgbmFtZXMuCisgICAgICAgICh3dGZDYWxsSU1QKTogRGl0dG8uCisg
ICAgICAgIChCcmlkZ2luZ0F1dG9yZWxlYXNlKTogQWRkZWQgYSBtb3JlIGV4dGVuc2l2ZSBjb21t
ZW50IGV4cGxhaW5pbmcgdGhlIHJlbGF0aW9uc2hpcCBvZgorICAgICAgICB0aGlzIGZ1bmN0aW9u
IHRvIHRoZSBzaW1pbGFyIENGQnJpZGdpbmdSZWxlYXNlIGZ1bmN0aW9uLCBhbmQgdXNlIENGQnJp
ZGdpbmdSZWxlYXNlIHdoZW4KKyAgICAgICAgY29tcGlsaW5nIHVuZGVyIEFSQy4KKwogMjAxMy0w
OC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGNvZGUgYmVoaW5kIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ODcwMjli
MDBkYjA5MjUyMmYxMzMzMzU0MmMyZTAyZDI1YzUyZGJlLi5kZjdiYjRhZDU5MWRmZDZiYzY5Njhi
OTM3ODEwNDM5YWI0M2NiMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTMtMDgt
MzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmlu
ZSB0aGUgSGFyZEF1dG9yZWxlYXNlIGZ1bmN0aW9uIGFuZCByZW5hbWUgaXQgQnJpZGdpbmdBdXRv
cmVsZWFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIwNTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToK
KyAgICAgICAgKEFYVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKEFYVGV4dE1hcmtlclJhbmdl
U3RhcnQpOgorICAgICAgICAoQVhUZXh0TWFya2VyUmFuZ2VFbmQpOgorICAgICAgICAodGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbik6CisgICAgICAgIFJlbmFtZSB0byBCcmlkZ2luZ0F1dG9y
ZWxlYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL0tVUkxNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpLVVJMOjpvcGVyYXRvciBOU1VSTCAqKTogUmVuYW1lIHRvIEJyaWRnaW5nQXV0b3Jl
bGVhc2UuCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCk6IEdldCByaWQgb2Yg
bmVlZGxlc3MgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViQ29y
ZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6bWFwSG9zdE5hbWVXaXRoUmFuZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6dXNl
clZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxN
YWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICopOgor
ICAgICAgICBSZW5hbWUgdG8gQnJpZGdpbmdBdXRvcmVsZWFzZS4KKwogMjAxMy0wOC0zMCAgTWlr
aGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAg
ICBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyBzaGFsbCBiZSB1c2VkIGZvciBSdWxlRGF0YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDA1MTJlOGZlOWNkODg4MWQ4YjI4MzVlMGMyNjMxNmUwNzAyYzgzMWIu
LjE5ZGU0YzBlNmUwN2M4M2JiZDQ4YTMwMGFlZDhlOWRlYjFmZWM1YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW01hY10gUmVmaW5lIHRoZSBIYXJkQXV0b3JlbGVhc2UgZnVuY3Rp
b24gYW5kIHJlbmFtZSBpdCBCcmlkZ2luZ0F1dG9yZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJh
cy5tbToKKyAgICAgICAgKC1bTlNGaWxlTWFuYWdlciBfd2Via2l0X3N0YXJ0dXBWb2x1bWVOYW1l
XSk6IFJlbW92ZWQgc29tZSB1bm5lZWRlZCBsb2NhbHMuCisgICAgICAgIEdvdCByaWQgb2YgdGhl
IHBvaW50bGVzcyByZWYvbGVha1JlZi9IYXJkQXV0b3JlbGVhc2UgZGFuY2UsIGFuZCByZXBsYWNl
ZCBpdAorICAgICAgICB3aXRoIGEgW1t4IGNvcHldIGF1dG9yZWxlYXNlXS4KKworICAgICAgICAq
IE1pc2MvV2ViTlNVUkxFeHRyYXMubW06CisgICAgICAgICgtW05TVVJMIF93ZWJfVVJMV2l0aExv
d2VyY2FzZWRTY2hlbWVdKTogUmVuYW1lZCB0byBCcmlkZ2luZ0F1dG9yZWxlYXNlLAorICAgICAg
ICBhbmQgZ290IHJpZCBvZiB1bm5lZWRlZCB0eXBlIGNhc3RzLgorCisgICAgICAgICogUGx1Z2lu
cy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKCtbV2ViQmFzZVBsdWdpblBhY2th
Z2UgcHJlZmVycmVkTG9jYWxpemF0aW9uTmFtZV0pOiBSZW5hbWVkIHRvIEJyaWRnaW5nQXV0b3Jl
bGVhc2UuCisgICAgICAgICogV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbToKKyAgICAg
ICAgKC1bV2ViUERGUmVwcmVzZW50YXRpb24gY29udmVydFBvc3RTY3JpcHREYXRhU291cmNlVG9Q
REY6XSk6IERpdHRvLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
K1tXZWJWaWV3IF9zZXRDYWNoZU1vZGVsOl0pOiBSZW5hbWVkIHRvIEJyaWRnaW5nQXV0b3JlbGVh
c2UgYW5kIGdvdCByaWQgb2YKKyAgICAgICAgdW5uZWVkZWQgdHlwZSBjYXN0LgorCiAyMDEzLTA4
LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUg
Y29kZSBiZWhpbmQgRU5BQkxFKERJQUxPR19FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGUzMDMwN2E1
MzdiMGM0MmI1NjQxZmRlZDUzYTFhNmYzMjQwNWQ2MjUuLjI2ODk0YmRhMGIxMTZhMTE4ZDAwZjIz
YWU2MTIzNTM0ZGM4M2MwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMy0wOC0z
MSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gUmVmaW5l
IHRoZSBIYXJkQXV0b3JlbGVhc2UgZnVuY3Rpb24gYW5kIHJlbmFtZSBpdCBCcmlkZ2luZ0F1dG9y
ZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6Om5zU3Ry
aW5nRnJvbVdlYkNvcmVTdHJpbmcpOiBSZW5hbWVkIHRvIEJyaWRnaW5nQXV0b3JlbGVhc2UuIEFs
c28KKyAgICAgICAgY2hhbmdlZCBjb25kaXRpb24gdG8gYmUgYSBsaXR0bGUgY2xlYW5lciBhbmQg
dXNlIGEgY29uc3RhbnQgc3RyaW5nIGZvciBlbXB0eQorICAgICAgICBzdHJpbmdzIGFzIHdlbGwg
YXMgbnVsbCBzdHJpbmdzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoYXV0b3JlbGVhc2VkKTogU3dpdGNoZWQg
ZnJvbSBhdXRvcmVsZWFzZSB0byBCcmlkZ2luZ0F1dG9yZWxlYXNlIGZvciBzdHJpbmdzLAorICAg
ICAgICB3aGljaCBlbGltaW5hdGVzIGEgdHlwZSBjYXN0IGFuZCBtYWtlcyB0aGlzIHdvcmsgdW5k
ZXIgR0MsIGFsdGhvdWdoIEkgZG9uJ3QKKyAgICAgICAgdGhpbmsgd2Ugc2hvdWxkIGNvbXBpbGUg
V2ViS2l0MiBmb3IgR0MgYXQgYWxsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOgorICAgICAgICAoLVtXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0
ZXI6XSk6CisgICAgICAgIFJlbmFtZWQgdG8gQnJpZGdpbmdBdXRvcmVsZWFzZS4KKwogMjAxMy0w
OC0zMCAgVGFtYXMgQ3plbmUgIDx0Y3plbmVAaW5mLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFJl
c29sdmUgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nIGluIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXggMzgxYTRhYzUxOTY2NDg3MmM2
ZmVkZjJlMjdiMjI1OGQzNTc0MWY1ZS4uMmRlMmRmODc2ZmU3ODk0NTQ1ZjFkY2RlMTllOWNhZGM4
YTMwNWI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQpAQCAtNzQ2LDcgKzc0
Niw3IEBAIGlkIHZhbHVlVG9TdHJpbmcoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
fQogCi0gICAgTlNTdHJpbmcgKnN0cmluZ05TID0gSGFyZEF1dG9yZWxlYXNlKEpTU3RyaW5nQ29w
eUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGpzc3RyaW5nKSk7CisgICAgTlNTdHJpbmcg
KnN0cmluZ05TID0gQnJpZGdpbmdBdXRvcmVsZWFzZShKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZykpOwogICAgIEpTU3RyaW5nUmVsZWFzZShqc3N0cmlu
Zyk7CiAgICAgcmV0dXJuIHN0cmluZ05TOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
T2JqY1J1bnRpbWVFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL09iamNSdW50aW1lRXh0cmFzLmgK
aW5kZXggYjJmMjMwNTMyZGNjYTdhNjMyOTBlY2Y5NzFlYjQ2Y2MzMzEzYmNlNy4uMDRmNGFkMWU5
N2E1ZjI0MTBlZjRmY2RmMjVmNzRlM2M0ZjY1OTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvT2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmpjUnVudGltZUV4
dHJhcy5oCkBAIC0yNSwzOCArMjUsNTAgQEAKICNpZm5kZWYgV1RGX09iamNSdW50aW1lRXh0cmFz
X2gKICNkZWZpbmUgV1RGX09iamNSdW50aW1lRXh0cmFzX2gKIAorLy8gRklYTUU6IFRoaXMgZmls
ZSdzIG5hbWUgYW5kIGZ1bmN0aW9uIG5hbWVzIHJlZmVyIHRvIE9iamVjdGl2ZS1DIGFzIE9iamMg
d2l0aCBhIGxvd2VyY2FzZSBDLAorLy8gYnV0IGl0IHNob3VsZCBiZSBPYmpDIHdpdGggYW4gdXBw
ZXJjYXNlIEMuCisKICNpbmNsdWRlIDxvYmpjL21lc3NhZ2UuaD4KIAogI2lmZGVmIF9fY3BsdXNw
bHVzCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlLCB0eXBlbmFtZS4uLiBBcmdUeXBlcz4KLWlu
bGluZSBSZXRUeXBlIHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmdU
eXBlcy4uLiBhcmdzKQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZS4u
LiBBcmd1bWVudFR5cGVzPgoraW5saW5lIFJldHVyblR5cGUgd3RmT2JqY01zZ1NlbmQoaWQgdGFy
Z2V0LCBTRUwgc2VsZWN0b3IsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewotICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFJldFR5cGUgKCopKGlkLCBTRUwsIEFyZ1R5cGVzLi4uKT4o
b2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmdzLi4uKTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxSZXR1cm5UeXBlICgqKShpZCwgU0VMLCBBcmd1bWVudFR5cGVzLi4uKT4o
b2JqY19tc2dTZW5kKSh0YXJnZXQsIHNlbGVjdG9yLCBhcmd1bWVudHMuLi4pOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBSZXRUeXBlLCB0eXBlbmFtZS4uLiBBcmdUeXBlcz4KLWlubGluZSBSZXRU
eXBlIHd0ZkNhbGxJTVAoSU1QIGltcGxlbWVudGF0aW9uLCBpZCB0YXJnZXQsIFNFTCBzZWxlY3Rv
ciwgQXJnVHlwZXMuLi4gYXJncykKK3RlbXBsYXRlPHR5cGVuYW1lIFJldHVyblR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50VHlwZXM+CitpbmxpbmUgUmV0dXJuVHlwZSB3dGZDYWxsSU1QKElNUCBp
bXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZ3VtZW50VHlwZXMuLi4g
YXJndW1lbnRzKQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFJldFR5cGUgKCopKGlk
LCBTRUwsIEFyZ1R5cGVzLi4uKT4oaW1wbGVtZW50YXRpb24pKHRhcmdldCwgc2VsZWN0b3IsIGFy
Z3MuLi4pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFJldHVyblR5cGUgKCopKGlkLCBT
RUwsIEFyZ3VtZW50VHlwZXMuLi4pPihpbXBsZW1lbnRhdGlvbikodGFyZ2V0LCBzZWxlY3Rvciwg
YXJndW1lbnRzLi4uKTsKIH0KKwogI2VuZGlmIC8vIF9fY3BsdXNwbHVzCiAKICNpZmRlZiBfX09C
SkNfXwotLy8gVXNlIEhhcmRBdXRvcmVsZWFzZSB0byByZXR1cm4gYW4gb2JqZWN0IG1hZGUgYnkg
YSBDb3JlIEZvdW5kYXRpb24KLS8vICJjcmVhdGUiIG9yICJjb3B5IiBmdW5jdGlvbiBhcyBhbiBh
dXRvcmVsZWFzZWQgYW5kIGdhcmJhZ2UgY29sbGVjdGVkCi0vLyBvYmplY3QuIENGIG9iamVjdHMg
bmVlZCB0byBiZSAibWFkZSBjb2xsZWN0YWJsZSIgZm9yIGF1dG9yZWxlYXNlIHRvIHdvcmsKLS8v
IHByb3Blcmx5IHVuZGVyIEdDLgotaW5saW5lIGlkIEhhcmRBdXRvcmVsZWFzZShDRlR5cGVSZWYg
b2JqZWN0KQorCisvLyBVc2UgQnJpZGdpbmdBdXRvcmVsZWFzZSB0byByZXR1cm4gYW4gb2JqZWN0
IG1hZGUgYnkgYSBDb3JlIEZvdW5kYXRpb24gImNyZWF0ZSIgb3IgImNvcHkiIGZ1bmN0aW9uCisv
LyBhcyBhbiBPYmplY3RpdmUtQyBvYmplY3QgdGhhdCBpcyBhcHByb3ByaWF0ZWx5IGF1dG9yZWxl
YXNlZCBhbmQgZ2FyYmFnZSBjb2xsZWN0YWJsZSBkZXBlbmRpbmcgb24KKy8vIHdoZXRoZXIgQVJD
IGFuZCBnYXJiYWdlIGNvbGxlY3Rpb24gYXJlIGluIHVzZS4gTmVhcmx5IGlkZW50aWNhbCB0byB0
aGUgQ0ZCcmlkZ2luZ1JlbGVhc2UgZnVuY3Rpb24sCisvLyBleGNlcHQgdGhhdCB1bmxpa2UgdGhh
dCBmdW5jdGlvbiwgaXQgaXMgbnVsbCB0b2xlcmFudCwgYW5kIHRoaXMgd2lsbCBub3QgY29tcGls
ZSBpbiBuZWVkbGVzcyBjYWxscworLy8gdG8gQ0ZNYWtlQ29sbGVjdGFibGUgd2hlbiBPQkpDX05P
X0dDIGlzIGRlZmluZWQuCitpbmxpbmUgaWQgQnJpZGdpbmdBdXRvcmVsZWFzZShDRlR5cGVSZWYg
b2JqZWN0KQogeworI2lmIF9faGFzX2ZlYXR1cmUob2JqY19hcmMpCisgICAgaWYgKCFvYmplY3Qp
CisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKG9iamVj
dCk7CisjZWxzZQogI2lmbmRlZiBPQkpDX05PX0dDCi0gICAgaWYgKG9iamVjdCkKLSAgICAgICAg
Q0ZNYWtlQ29sbGVjdGFibGUob2JqZWN0KTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICBDRk1ha2VDb2xsZWN0YWJsZShvYmplY3QpOwogI2VuZGlmCi0jaWYgIV9f
aGFzX2ZlYXR1cmUob2JqY19hcmMpCi0gICAgWyhpZClvYmplY3QgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiBbKGlkKW9iamVjdCBhdXRvcmVsZWFzZV07CiAjZW5kaWYKLSAgICByZXR1cm4gKGlk
KW9iamVjdDsKIH0KLSNlbmRpZiAvLyBfX09CSkNfXworCisjZW5kaWYKIAogI2VuZGlmIC8vIFdU
Rl9PYmpjUnVudGltZUV4dHJhc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCmluZGV4IGFlYzUxMTljMGM2MjE5ZTU5NWQzZDBhYzk4OGNhNzIzMmY0N2UyNDEuLmEwOTg1
YTZlYmE1NmI2NzIyNDliODYyODlhM2Q5MzFmNTNiYzRlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC00MjAsMjEgKzQyMCwyMSBAQCBzdGF0aWMgaWQgQVhU
ZXh0TWFya2VyUmFuZ2UoaWQgc3RhcnRNYXJrZXIsIGlkIGVuZE1hcmtlcikKICAgICBBU1NFUlQo
ZW5kTWFya2VyICE9IG5pbCk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKHN0YXJ0TWFya2VyKSA9
PSB3a0dldEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZW5k
TWFya2VyKSA9PSB3a0dldEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKLSAgICByZXR1cm4gSGFyZEF1
dG9yZWxlYXNlKHdrQ3JlYXRlQVhUZXh0TWFya2VyUmFuZ2UoKENGVHlwZVJlZilzdGFydE1hcmtl
ciwgKENGVHlwZVJlZillbmRNYXJrZXIpKTsKKyAgICByZXR1cm4gQnJpZGdpbmdBdXRvcmVsZWFz
ZSh3a0NyZWF0ZUFYVGV4dE1hcmtlclJhbmdlKChDRlR5cGVSZWYpc3RhcnRNYXJrZXIsIChDRlR5
cGVSZWYpZW5kTWFya2VyKSk7CiB9CiAKIHN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0
KGlkIHJhbmdlKQogewogICAgIEFTU0VSVChyYW5nZSAhPSBuaWwpOwogICAgIEFTU0VSVChDRkdl
dFR5cGVJRChyYW5nZSkgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5nZVR5cGVJRCgpKTsKLSAgICBy
ZXR1cm4gSGFyZEF1dG9yZWxlYXNlKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQocmFuZ2Up
KTsKKyAgICByZXR1cm4gQnJpZGdpbmdBdXRvcmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJSYW5n
ZVN0YXJ0KHJhbmdlKSk7CiB9CiAKIHN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCBy
YW5nZSkKIHsKICAgICBBU1NFUlQocmFuZ2UgIT0gbmlsKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBl
SUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IEhhcmRBdXRvcmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJSYW5nZUVuZChyYW5nZSkpOworICAg
IHJldHVybiBCcmlkZ2luZ0F1dG9yZWxlYXNlKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlRW5kKHJh
bmdlKSk7CiB9CiAKICNwcmFnbWEgbWFyayBTZWFyY2ggaGVscGVycwpAQCAtNTE5LDcgKzUxOSw3
IEBAIHN0YXRpYyBpZCB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRpCiAgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElE
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIAotICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2Uo
d2tDcmVhdGVBWFRleHRNYXJrZXIoJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRh
dGEpKSk7CisgICAgcmV0dXJuIEJyaWRnaW5nQXV0b3JlbGVhc2Uod2tDcmVhdGVBWFRleHRNYXJr
ZXIoJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CiB9CiAKIC0gKGlk
KXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKXZp
c2libGVQb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9LVVJMTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0KaW5kZXggZmQ0ZmNm
ZDVhOTI3ZWQ2ZGI2OTZmMDQ5NzA1MDZmYmY4OGE2MDExMS4uMzIyZmM0ZWExNmIzNWUwMGNiYmQx
ZmZiYjE3ZDllODMzNTE4MGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0tVUkxNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMu
bW0KQEAgLTQ5LDcgKzQ5LDcgQEAgS1VSTDo6b3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0CiB7CiAg
ICAgLy8gQ3JlYXRpbmcgYSB0b2xsLWZyZWUgYnJpZGdlZCBDRlVSTCwgYmVjYXVzZSBhIHJlYWwg
TlNVUkwgd291bGQgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdHJpbmcuCiAgICAgLy8gV2Un
bGwgbmVlZCBmaWRlbGl0eSB3aGVuIHJvdW5kLXRyaXBwaW5nIHZpYSBDRlVSTEdldEJ5dGVzKCku
Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlVSTCgpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIEJyaWRnaW5nQXV0b3JlbGVhc2UoY3JlYXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwog
fQogCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKQEAgLTU4
LDEwICs1OCw4IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gS1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25z
dAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChpc0VtcHR5KCkpIHsKLSAgICAgICAgLy8g
V2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvCi0g
ICAgICAgIC8vIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVs
bCB2YWx1ZXMuCi0gICAgICAgIFJldGFpblB0cjxOU1VSTD4gZW1wdHlOU1VSTCA9IGFkb3B0TlMo
W1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIiXSk7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PENGVVJMUmVmPihlbXB0eU5TVVJMLmdldCgpKTsKKyAgICAgICAgLy8gV2Ug
dXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4gTlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0
ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihhZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpKTsKICAgICB9CiAKICAgICBVUkxDaGFyQnVm
ZmVyIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5T
VVJMRXh0cmFzLm1tCmluZGV4IGM3MjBjZDZmZWNlZjBiMzdjYWY2OGMzMTk1ZmJhMmE2NWY0ZDQ4
MzYuLjk0MTBlMzFiY2U2YmViOTQ4ZjM4ZmE1ZDFlZmU1Y2Q2MmFmNGVhYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVOU1VSTEV4dHJhcy5tbQpAQCAtMjQ4
LDcgKzI0OCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbWFwSG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJp
bmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBlbmNvCiAgICAgCiAgICAgaWYgKGVuY29k
ZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBvcHRpb25zOk5TTGl0ZXJhbFNlYXJjaCBy
YW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkgewogICAgICAgICBOU1N0cmluZyAq
c3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6cmFuZ2VdOwotICAgICAgICBz
dWJzdHJpbmcgPSBIYXJkQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVTdHJpbmdCeVJlcGxhY2luZ1Bl
cmNlbnRFc2NhcGVzKE5VTEwsIChDRlN0cmluZ1JlZilzdWJzdHJpbmcsIENGU1RSKCIiKSkpOwor
ICAgICAgICBzdWJzdHJpbmcgPSBCcmlkZ2luZ0F1dG9yZWxlYXNlKENGVVJMQ3JlYXRlU3RyaW5n
QnlSZXBsYWNpbmdQZXJjZW50RXNjYXBlcyhOVUxMLCAoQ0ZTdHJpbmdSZWYpc3Vic3RyaW5nLCBD
RlNUUigiIikpKTsKICAgICAgICAgaWYgKHN1YnN0cmluZykgewogICAgICAgICAgICAgc3RyaW5n
ID0gc3Vic3RyaW5nOwogICAgICAgICAgICAgcmFuZ2UgPSBOU01ha2VSYW5nZSgwLCBbc3RyaW5n
IGxlbmd0aF0pOwpAQCAtNTY0LDkgKzU2NCw5IEBAIE5TVVJMICpVUkxXaXRoRGF0YShOU0RhdGEg
KmRhdGEsIE5TVVJMICpiYXNlVVJMKQogICAgICAgICAvLyAoZS5nIGNhbGxzIHRvIE5TVVJMIC1w
YXRoKS4gSG93ZXZlciwgdGhpcyBmdW5jdGlvbiBpcyBub3QgdG9sZXJhbnQgb2YgaWxsZWdhbCBV
VEYtOCBzZXF1ZW5jZXMsIHdoaWNoCiAgICAgICAgIC8vIGNvdWxkIGVpdGhlciBiZSBhIG1hbGZv
cm1lZCBzdHJpbmcgb3IgYnl0ZXMgaW4gYSBkaWZmZXJlbnQgZW5jb2RpbmcsIGxpa2Ugc2hpZnQt
amlzLCBzbyB3ZSBmYWxsIGJhY2sKICAgICAgICAgLy8gb250byB1c2luZyBJU08gTGF0aW4gMSBp
biB0aG9zZSBjYXNlcy4KLSAgICAgICAgcmVzdWx0ID0gSGFyZEF1dG9yZWxlYXNlKENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnl0ZXMsIGxlbmd0aCwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgIHJlc3VsdCA9IEJy
aWRnaW5nQXV0b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhOVUxMLCBi
eXRlcywgbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIChDRlVSTFJlZiliYXNlVVJMLCBZ
RVMpKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXN1bHQgPSBIYXJkQXV0
b3JlbGVhc2UoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhOVUxMLCBieXRlcywgbGVu
Z3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgKENGVVJMUmVmKWJhc2VVUkwsIFlFUykp
OworICAgICAgICAgICAgcmVzdWx0ID0gQnJpZGdpbmdBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
SVNPTGF0aW4xLCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CiAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdOwogICAgICAgICAgICAgICAg
IApAQCAtODM4LDcgKzgzOCw3IEBAIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAq
VVJMKQogICAgIAogICAgIHJlc3VsdCA9IG1hcEhvc3ROYW1lcyhyZXN1bHQsICFuZWVkc0hvc3RO
YW1lRGVjb2RpbmcpOwogICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJlY29tcG9zZWRTdHJpbmdXaXRo
Q2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVTdHJp
bmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVmKXJlc3VsdCkpOworICAg
IHJldHVybiBCcmlkZ2luZ0F1dG9yZWxlYXNlKGNyZWF0ZVN0cmluZ1dpdGhFc2NhcGVkVW5zYWZl
Q2hhcmFjdGVycygoQ0ZTdHJpbmdSZWYpcmVzdWx0KSk7CiB9CiAKIEJPT0wgaXNVc2VyVmlzaWJs
ZVVSTChOU1N0cmluZyAqc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggZGE4ZjJkOTQyNGNiNTBhYTYyZWEyN2ZmZDEx
YWNhZGQ5MzY1ODU5ZS4uZjliYzk2NzJiNTNmMmVhZmQ0NGJhYjAyMzg3ODk3ODI0MjU4ODAwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFj
Lm1tCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiBTdHJpbmdJbXBsOjpvcGVy
YXRvciBOU1N0cmluZyAqKCkKIHsKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gQnJpZGdpbmdBdXRvcmVsZWFzZShjcmVh
dGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCA5ZDY0NDk1M2I3YThhNjJkZGIw
MmZhY2Y4MjI0OGY1OWMwY2IwMjE4Li5jODQyZWJiYWMzZjVlNWRiZDlkYWRjM2QzYzk0YTBkY2Qx
OTI4Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFn
ZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tCkBAIC05Niw5ICs5Niw3IEBAIC0gKE5TU3RyaW5nICopX3dlYmtpdF9zdGFydHVw
Vm9sdW1lTmFtZQogewogICAgIFJldGFpblB0cjxEQVNlc3Npb25SZWY+IHNlc3Npb24gPSBhZG9w
dENGKERBU2Vzc2lvbkNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CiAgICAgUmV0YWluUHRy
PERBRGlza1JlZj4gZGlzayA9IGFkb3B0Q0YoREFEaXNrQ3JlYXRlRnJvbVZvbHVtZVBhdGgoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc2Vzc2lvbi5nZXQoKSwgKENGVVJMUmVmKVtOU1VSTCBmaWxlVVJM
V2l0aFBhdGg6QCIvIl0pKTsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaXNrRGVz
Y3JpcHRpb24gPSBhZG9wdENGKERBRGlza0NvcHlEZXNjcmlwdGlvbihkaXNrLmdldCgpKSk7Ci0g
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiBkaXNrTmFtZSA9IChOU1N0cmluZyAqKUNGRGljdGlvbmFy
eUdldFZhbHVlKGRpc2tEZXNjcmlwdGlvbi5nZXQoKSwga0RBRGlza0Rlc2NyaXB0aW9uVm9sdW1l
TmFtZUtleSk7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShkaXNrTmFtZS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBbWyhOU1N0cmluZyAqKUNGRGljdGlvbmFyeUdldFZhbHVlKGFkb3B0Q0Yo
REFEaXNrQ29weURlc2NyaXB0aW9uKGRpc2suZ2V0KCkpKS5nZXQoKSwga0RBRGlza0Rlc2NyaXB0
aW9uVm9sdW1lTmFtZUtleSkgY29weV0gYXV0b3JlbGVhc2VdOwogfQogCiAvLyAtW05TRmlsZU1h
bmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpdIHJldHVybnMgTk8gaWYgdGhlcmUgaXMgYSBicm9rZW4g
c3ltbGluayBhdCB0aGUgcGF0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFz
Lm1tCmluZGV4IDBhZGEyZWUzMDBiNWJkNTVkMjgwOTBhOWFhNWUxOWVjYTU5ODg1MTEuLjRiNDgz
NDAzN2ZlMjA2Y2QwODE5YTM4NDJhMTQ0ZTNiMmM3YTliZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJOU1VSTEV4dHJhcy5tbQpAQCAtMjE0LDggKzIxNCw4IEBAIC0gKE5TVVJMICopX3dl
Yl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZQogICAgIH0KICAgICAKICAgICBOU1VSTCAqcmVzdWx0
ID0gY2hhbmdlZAotICAgICAgICA/IChOU1VSTCAqKUhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0
ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ1ZmZlciwgYnl0ZXNGaWxsZWQsIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgbmlsLCBZRVMpKQotICAgICAgICA6IChOU1VSTCAqKXNlbGY7CisgICAg
ICAgID8gQnJpZGdpbmdBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KE5VTEwsIGJ1ZmZlciwgYnl0ZXNGaWxsZWQsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbmlsLCBZ
RVMpKQorICAgICAgICA6IHNlbGY7CiAKICAgICBpZiAoYnVmZmVyICE9IHN0YXRpY19idWZmZXIp
IHsKICAgICAgICAgZnJlZShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KaW5kZXggOWE4ZmI1NjdiZjkyMjM5NjZkZjA0NGVk
YmNlNGNmN2EzOTNlZjI5Ny4uMzk2MjNiMmVkOTg3MWM0NTA5OWRjZmVjMjRlZTJmYmEwOTgwZWI3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFj
a2FnZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNr
YWdlLm1tCkBAIC05MCw3ICs5MCw3IEBAICsgKFdlYkJhc2VQbHVnaW5QYWNrYWdlICopcGx1Z2lu
V2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0aAogCiArIChOU1N0cmluZyAqKXByZWZlcnJl
ZExvY2FsaXphdGlvbk5hbWUKIHsKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKFdLQ29weUNG
TG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZShOVUxMKSk7CisgICAgcmV0dXJuIEJyaWRnaW5nQXV0
b3JlbGVhc2UoV0tDb3B5Q0ZMb2NhbGl6YXRpb25QcmVmZXJyZWROYW1lKE5VTEwpKTsKIH0KIAog
I2lmIENPTVBJTEVSKENMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UERGUmVwcmVzZW50YXRpb24ubW0KaW5kZXggYzNiY2Q5YjZmNjU2NjMxYWZlMDA3MWJmMTNhYTk5
MTFlODY5OTNjNy4uYmEyNmZjYTRkNTAwNjlkZTcwOGQwZTIyYmM4NzQ3OWU4YmEyNjg2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNlbnRhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1t
CkBAIC0xMDcsNyArMTA3LDcgQEAgLSAoTlNEYXRhICopY29udmVydFBvc3RTY3JpcHREYXRhU291
cmNlVG9QREY6KE5TRGF0YSAqKWRhdGEKICAgICBDRlJlbGVhc2UocHJvdmlkZXIpOwogICAgIENG
UmVsZWFzZShjb25zdW1lcik7CiAKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKHJlc3VsdCk7
CisgICAgcmV0dXJuIEJyaWRnaW5nQXV0b3JlbGVhc2UocmVzdWx0KTsKIH0KIAogLSAodm9pZClm
aW5pc2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3MDgzMTA0ODc5NTg1MzNkMjRi
MDRhNDZmZTZiZGVkM2FkMTQ0MjMzLi44ZGFiYTdjODAxYjkzYzRhNzcwZjMwYzMwNzc5NWE0ODI1
NzM0YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01OTA2LDcgKzU5
MDYsNyBAQCArICh2b2lkKV9zZXRDYWNoZU1vZGVsOihXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwK
ICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVs
KQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9
IChOU1N0cmluZyAqKUhhcmRBdXRvcmVsZWFzZShXS0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rv
cnkoKSk7CisgICAgTlNTdHJpbmcgKm5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBCcmlkZ2luZ0F1dG9y
ZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKICAgICBpZiAoIW5zdXJs
Q2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hvbWVEaXJl
Y3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmlu
Z1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KaW5kZXggNGFjNmY4Y2Q2NzhmNTY1NzdjZTc1Y2QzZmNlMTkyMTNlNTllOGI4NS4uYzU3
N2I2NjRiNzBlOTg5ZGZkN2JhYjFlOGJiMDU5NDI0NjRlNWJjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0zMyw5ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1OU1N0cmluZyogbnNTdHJpbmdGcm9tV2ViQ29yZVN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZykKK05TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuaW1wbCgpID8g
SGFyZEF1dG9yZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBs
KCkpKSkgOiBAIiI7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBAIiIgOiBCcmlkZ2lu
Z0F1dG9yZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkp
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCAzZjk5MjVkMGE2
NWZiYTVmYWE0MjJiMTZiYTFmMjIxZjgwYmQ2YjRmLi4zZWRlN2RkZDQzODMyZTI4M2Q1MDEwNmYw
YWQyMDVjYmRmOWE1ZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCkBAIC00OSwx
NCArNDksMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGlubGluZSBOU1N0
cmluZyAqYXV0b3JlbGVhc2VkKFdLU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTdHJpbmcgPSBhZG9wdFdLKHN0cmluZyk7Ci0gICAgcmV0dXJuIFso
TlNTdHJpbmcgKilXS1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3a1N0
cmluZy5nZXQoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBCcmlkZ2luZ0F1dG9yZWxlYXNl
KFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFkb3B0V0soc3RyaW5n
KS5nZXQoKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIE5TVVJMICphdXRvcmVsZWFzZWQoV0tVUkxS
ZWYgdXJsKQogewotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1VSTCA9IGFkb3B0V0sodXJs
KTsKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKFdLVVJMQ29weUNGVVJMKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHdrVVJMLmdldCgpKSk7CisgICAgcmV0dXJuIEJyaWRnaW5nQXV0b3JlbGVhc2Uo
V0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRvcHRXSyh1cmwpLmdldCgpKSk7
CiB9CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YSA6IE5TT2Jq
ZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQppbmRleCBlYTUy
Yjg2OTFmOTliMTRjYjJjNDg2MmI4ODk2ODlmZDdjMzZhNTQyLi5iZDVmNmJiZTc5N2RhZDQwMjRh
NzY4OWMwNGZkZTM3YTZkY2NiMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0Lm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXQKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBpZiAodG9JbXBsKHJlc3VsdC5nZXQoKSktPnR5
cGUoKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gSGFyZEF1dG9yZWxl
YXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIChXS1N0cmluZ1Jl
ZilyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIEJyaWRnaW5nQXV0b3JlbGVhc2UoV0tT
dHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKFdLU3RyaW5nUmVmKXJlc3Vs
dC5nZXQoKSkpOwogICAgIGVsc2UgaWYgKHRvSW1wbChyZXN1bHQuZ2V0KCkpLT50eXBlKCkgPT0g
V0tCb29sZWFuR2V0VHlwZUlEKCkpCiAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXN1bHQu
Z2V0KCkpKV07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBlY2E4YWZiOTk3OTJlZTUxZmI2M2UwZGIwZjBjYzlkNzBjZTRhZGZlLi45NjRkYzhm
ZDM2MmRjZjBjYTRjYTYxMDI1Nzg1NTM2M2U0YzRiZDRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDgtMzEg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFJlZmluZSB0
aGUgSGFyZEF1dG9yZWxlYXNlIGZ1bmN0aW9uIGFuZCByZW5hbWUgaXQgQnJpZGdpbmdBdXRvcmVs
ZWFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIw
NTY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChkdW1wKTogUmVu
YW1lIHRvIEJyaWRnaW5nQXV0b3JlbGVhc2UuCisKIDIwMTMtMDgtMzAgIEdhYm9yIEFicmFoYW0g
IDxhYnJobUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBSZW1vdmUgcXQtNS4wLXdr
MiBmcm9tIHRoZSBiYXNlbGluZSBzZWFyY2ggcGF0aHMgYmVjYXVzZSB0aGUgbWlncmF0aW9uIG9m
IGV4cGVjdGF0aW9ucyB0byBxdC13azIgaXMgZG9uZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA0NTBiMjJhYmU0OGYwZjZjNzAzODVhOGZhMWUwM2I2
OWQxNTNkY2FmLi44YzcyY2IxZGUzMjEwMzYxYWIwMTY1MjFlODI2NTU5ZGRhZGE4MDVhIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xMTk1LDExICsx
MTk1LDExIEBAIHZvaWQgZHVtcCgpCiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBw
bGljYXRpb24vcGRmIjsKICAgICAgICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcERPTUFz
V2ViQXJjaGl2ZSgpKSB7CiAgICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1tt
YWluRnJhbWUgRE9NRG9jdW1lbnRdIHdlYkFyY2hpdmVdOwotICAgICAgICAgICAgcmVzdWx0U3Ry
aW5nID0gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgo
Q0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcg
PSBCcmlkZ2luZ0F1dG9yZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgo
Q0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CiAgICAgICAgICAgICByZXN1bHRNaW1lVHlw
ZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNlIGlmIChnVGVz
dFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CiAgICAgICAgICAgICBXZWJBcmNo
aXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gd2ViQXJjaGl2ZV07Ci0g
ICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlWE1MU3RyaW5n
RnJvbVdlYkFyY2hpdmVEYXRhKChDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKKyAgICAg
ICAgICAgIHJlc3VsdFN0cmluZyA9IEJyaWRnaW5nQXV0b3JlbGVhc2UoY3JlYXRlWE1MU3RyaW5n
RnJvbVdlYkFyY2hpdmVEYXRhKChDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKICAgICAg
ICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFttYWluRnJhbWUgcmVuZGVy
VHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nOmdUZXN0UnVubmVyLT5pc1By
aW50aW5nKCldOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210256</attachid>
            <date>2013-09-01 14:14:25 -0700</date>
            <delta_ts>2013-09-02 11:54:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120569-20130901141424.patch</filename>
            <type>text/plain</type>
            <size>22823</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0OTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
N2EwMGRhOTIzZWQ4NGVhMWZlZTEwODVkODY0Mjg2MDYwYWU4OWI2Li4xZmVmNTRkOTZiMmVkZTVk
YjY5YzQwNWU4MTFlNDhiMjVjYTQyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW01hY10gTm8gbmVlZCBmb3IgSGFyZEF1dG9yZWxlYXNlLCB3aGljaCBpcyBzYW1l
IGFzIENGQnJpZGdpbmdSZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjA1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFQSS9KU1ZhbHVlLm1tOgorICAgICAgICAodmFsdWVUb1N0cmluZyk6
IFVzZSBDRkJyaWRnaW5nUmVsZWFzZS4KKwogMjAxMy0wOC0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGVCbG9jayByZWZhY3RvcmluZyBicm9rZSBwcm9m
aWxlIGR1bXBpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggYmJiYWVhN2ZhNWQ5MzcyZmY4YzcwNzNjMzlhYjkxMmI0ZTk4ODk3
OS4uMjU3MDIxYzIzM2VhMzM1NWE0YjdjM2Y0MjM2NTliNzdkNjc0NjM2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMy0wOC0zMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW01hY10gTm8gbmVlZCBmb3IgSGFyZEF1dG9yZWxlYXNlLCB3aGljaCBpcyBzYW1lIGFz
IENGQnJpZGdpbmdSZWxlYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjA1NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oOiBBZGRlZCBhIEZJWE1FIGFib3V0
IG1pc2NhcGl0YWxpemF0aW9uIG9mIE9iakMuCisgICAgICAgIERlbGV0ZWQgSGFyZEF1dG9yZWxl
YXNlLgorICAgICAgICAod3RmT2JqY01zZ1NlbmQpOiBEcm9wcGVkIHRoZSB1c2Ugb2YgYWJicmV2
aWF0aW9ucyBpbiBsb2NhbCBjbGFzcyBhbmQgYXJndW1lbnQgbmFtZXMuCisgICAgICAgICh3dGZD
YWxsSU1QKTogRGl0dG8uCisKIDIwMTMtMDgtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIEpTVmFsdWUgYm9vbCBjb252ZXJzaW9uIGxlc3MgZGFuZ2Vy
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNGNlZWU3NmI0ZjAzYWU4OGNkNGFjYmIyYjliMzYyZWU2MmQ3MDUx
Yy4uZTE5NzQ3ODBlMDhmNTRlODk1MDhhM2MzOGJjZjdiNDgzNDczZGIzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI5IEBACisyMDEzLTA4LTMxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBbTWFjXSBObyBuZWVkIGZvciBIYXJkQXV0b3JlbGVhc2UsIHdoaWNoIGlz
IHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChBWFRleHRNYXJrZXJSYW5nZSk6CisgICAgICAg
IChBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KToKKyAgICAgICAgKEFYVGV4dE1hcmtlclJhbmdlRW5k
KToKKyAgICAgICAgKHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICBVc2Ug
Q0ZCcmlkZ2luZ1JlbGVhc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OktVUkw6Om9wZXJhdG9yIE5TVVJMICopOiBVc2UgQ0ZCcmlkZ2lu
Z1JlbGVhc2UuCisgICAgICAgIChXZWJDb3JlOjpLVVJMOjpjcmVhdGVDRlVSTCk6IEdldCByaWQg
b2YgbmVlZGxlc3MgbG9jYWwgdmFyaWFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2Vi
Q29yZU5TVVJMRXh0cmFzLm1tOgorICAgICAgICAoV2ViQ29yZTo6bWFwSG9zdE5hbWVXaXRoUmFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMV2l0aERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
dXNlclZpc2libGVTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0lt
cGxNYWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICop
OgorICAgICAgICBVc2UgQ0ZCcmlkZ2luZ1JlbGVhc2UuCisKIDIwMTMtMDktMDEgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEV2ZW50SGFuZGxlcjo6bV9mcmFt
ZSBzaG91bGQgYmUgYSBGcmFtZSYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDUxMmU4ZmU5Y2Q4ODgx
ZDhiMjgzNWUwYzI2MzE2ZTA3MDJjODMxYi4uNGI3NGY5YzIyOWRlNzZhNDkzZjQxODc0NjhiNTM0
YzU3ZDMzZGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTA4LTMx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBObyBuZWVk
IGZvciBIYXJkQXV0b3JlbGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9X
ZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAoLVtOU0ZpbGVNYW5hZ2VyIF93ZWJr
aXRfc3RhcnR1cFZvbHVtZU5hbWVdKTogUmVtb3ZlZCBzb21lIHVubmVlZGVkIGxvY2Fscy4KKyAg
ICAgICAgR290IHJpZCBvZiB0aGUgcG9pbnRsZXNzIHJlZi9sZWFrUmVmL0hhcmRBdXRvcmVsZWFz
ZSBkYW5jZSwgYW5kIHJlcGxhY2VkIGl0CisgICAgICAgIHdpdGggYSBbW3ggY29weV0gYXV0b3Jl
bGVhc2VdLgorCisgICAgICAgICogTWlzYy9XZWJOU1VSTEV4dHJhcy5tbToKKyAgICAgICAgKC1b
TlNVUkwgX3dlYl9VUkxXaXRoTG93ZXJjYXNlZFNjaGVtZV0pOiBVc2UgQ0ZCcmlkZ2luZ1JlbGVh
c2UsIGFuZCBnb3QgcmlkCisgICAgICAgIG9mIHVubmVlZGVkIHR5cGUgY2FzdHMuCisKKyAgICAg
ICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tOgorICAgICAgICAoK1tXZWJCYXNl
UGx1Z2luUGFja2FnZSBwcmVmZXJyZWRMb2NhbGl6YXRpb25OYW1lXSk6IFVzZSBDRkJyaWRnaW5n
UmVsZWFzZS4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tOgorICAg
ICAgICAoLVtXZWJQREZSZXByZXNlbnRhdGlvbiBjb252ZXJ0UG9zdFNjcmlwdERhdGFTb3VyY2VU
b1BERjpdKTogRGl0dG8uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgrW1dlYlZpZXcgX3NldENhY2hlTW9kZWw6XSk6IFVzZSBDRkJyaWRnaW5nUmVsZWFzZSBhbmQg
Z290IHJpZCBvZiB1bm5lZWRlZAorICAgICAgICB0eXBlIGNhc3QuCisKIDIwMTMtMDgtMzAgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb2RlIGJl
aGluZCBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODU4ZWQ0NGVhOTY4NzQw
MjVhOTA3YjM5ZTRiMTJlYmMwYTUzMjVlNC4uN2U2MDQ4OTEzYzdlNmM0NjAyYTg4YmRmOTM0YWUw
ZGI3ODMzYzdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA4LTMxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBObyBuZWVkIGZvciBI
YXJkQXV0b3JlbGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6bnNTdHJpbmdGcm9tV2ViQ29y
ZVN0cmluZyk6IFVzZSBDRkJyaWRnaW5nUmVsZWFzZS4gQWxzbworICAgICAgICBjaGFuZ2VkIGNv
bmRpdGlvbiB0byBiZSBhIGxpdHRsZSBjbGVhbmVyIGFuZCB1c2UgYSBjb25zdGFudCBzdHJpbmcg
Zm9yIGVtcHR5CisgICAgICAgIHN0cmluZ3MgYXMgd2VsbCBhcyBudWxsIHN0cmluZ3MuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06
CisgICAgICAgIChhdXRvcmVsZWFzZWQpOiBTd2l0Y2hlZCBmcm9tIGF1dG9yZWxlYXNlIHRvIENG
QnJpZGdpbmdSZWxlYXNlIGZvciBzdHJpbmdzLAorICAgICAgICB3aGljaCBlbGltaW5hdGVzIGEg
dHlwZSBjYXN0IGFuZCBtYWtlcyB0aGlzIHdvcmsgdW5kZXIgR0MsIGFsdGhvdWdoIEkgZG9uJ3QK
KyAgICAgICAgdGhpbmsgd2Ugc2hvdWxkIGNvbXBpbGUgV2ViS2l0MiBmb3IgR0MuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qu
bW06CisgICAgICAgICgtW1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFtZXRlcjpdKToKKyAgICAgICAgVXNlIENGQnJpZGdpbmdS
ZWxlYXNlLgorCiAyMDEzLTA4LTMxICBTYW50b3NoIE1haHRvICA8c2FudG9zaC5tYUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICB3YXJuaW5nOiB1bnVzZWQgcGFyYW1ldGVyIHBvaW50IGFuZCBhcmVh
IGluIEV3a1ZpZXcuY3BwOjEzOTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRl
eCAzODFhNGFjNTE5NjY0ODcyYzZmZWRmMmUyN2IyMjU4ZDM1NzQxZjVlLi4zZmZmZWVlNmQxMWZi
YTI2YTFjNzQwNWU3ZjBiZjkxOTI2NmVmZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zh
bHVlLm1tCkBAIC03NDYsNyArNzQ2LDcgQEAgaWQgdmFsdWVUb1N0cmluZyhKU0dsb2JhbENvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXAKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBOU1N0cmluZyAqc3RyaW5nTlMgPSBIYXJkQXV0
b3JlbGVhc2UoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwganNzdHJp
bmcpKTsKKyAgICBOU1N0cmluZyAqc3RyaW5nTlMgPSBDRkJyaWRnaW5nUmVsZWFzZShKU1N0cmlu
Z0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBqc3N0cmluZykpOwogICAgIEpTU3Ry
aW5nUmVsZWFzZShqc3N0cmluZyk7CiAgICAgcmV0dXJuIHN0cmluZ05TOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL09i
amNSdW50aW1lRXh0cmFzLmgKaW5kZXggYjJmMjMwNTMyZGNjYTdhNjMyOTBlY2Y5NzFlYjQ2Y2Mz
MzEzYmNlNy4uODliOWY0YjljNmZjNTVmN2M4ZmZmNTUzNTBjYTI2OTA2NjAxZDA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvT2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9PYmpjUnVudGltZUV4dHJhcy5oCkBAIC0yNSwzOCArMjUsMjUgQEAKICNpZm5kZWYgV1RG
X09iamNSdW50aW1lRXh0cmFzX2gKICNkZWZpbmUgV1RGX09iamNSdW50aW1lRXh0cmFzX2gKIAor
Ly8gRklYTUU6IFRoaXMgZmlsZSdzIG5hbWUgYW5kIGZ1bmN0aW9uIG5hbWVzIHJlZmVyIHRvIE9i
amVjdGl2ZS1DIGFzIE9iamMgd2l0aCBhIGxvd2VyY2FzZSBDLAorLy8gYnV0IGl0IHNob3VsZCBi
ZSBPYmpDIHdpdGggYW4gdXBwZXJjYXNlIEMuCisKICNpbmNsdWRlIDxvYmpjL21lc3NhZ2UuaD4K
IAogI2lmZGVmIF9fY3BsdXNwbHVzCi10ZW1wbGF0ZTx0eXBlbmFtZSBSZXRUeXBlLCB0eXBlbmFt
ZS4uLiBBcmdUeXBlcz4KLWlubGluZSBSZXRUeXBlIHd0Zk9iamNNc2dTZW5kKGlkIHRhcmdldCwg
U0VMIHNlbGVjdG9yLCBBcmdUeXBlcy4uLiBhcmdzKQotewotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFJldFR5cGUgKCopKGlkLCBTRUwsIEFyZ1R5cGVzLi4uKT4ob2JqY19tc2dTZW5kKSh0
YXJnZXQsIHNlbGVjdG9yLCBhcmdzLi4uKTsKLX0KIAotdGVtcGxhdGU8dHlwZW5hbWUgUmV0VHlw
ZSwgdHlwZW5hbWUuLi4gQXJnVHlwZXM+Ci1pbmxpbmUgUmV0VHlwZSB3dGZDYWxsSU1QKElNUCBp
bXBsZW1lbnRhdGlvbiwgaWQgdGFyZ2V0LCBTRUwgc2VsZWN0b3IsIEFyZ1R5cGVzLi4uIGFyZ3Mp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVz
PgoraW5saW5lIFJldHVyblR5cGUgd3RmT2JqY01zZ1NlbmQoaWQgdGFyZ2V0LCBTRUwgc2VsZWN0
b3IsIEFyZ3VtZW50VHlwZXMuLi4gYXJndW1lbnRzKQogewotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFJldFR5cGUgKCopKGlkLCBTRUwsIEFyZ1R5cGVzLi4uKT4oaW1wbGVtZW50YXRpb24p
KHRhcmdldCwgc2VsZWN0b3IsIGFyZ3MuLi4pOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PFJldHVyblR5cGUgKCopKGlkLCBTRUwsIEFyZ3VtZW50VHlwZXMuLi4pPihvYmpjX21zZ1NlbmQp
KHRhcmdldCwgc2VsZWN0b3IsIGFyZ3VtZW50cy4uLik7CiB9Ci0jZW5kaWYgLy8gX19jcGx1c3Bs
dXMKIAotI2lmZGVmIF9fT0JKQ19fCi0vLyBVc2UgSGFyZEF1dG9yZWxlYXNlIHRvIHJldHVybiBh
biBvYmplY3QgbWFkZSBieSBhIENvcmUgRm91bmRhdGlvbgotLy8gImNyZWF0ZSIgb3IgImNvcHki
IGZ1bmN0aW9uIGFzIGFuIGF1dG9yZWxlYXNlZCBhbmQgZ2FyYmFnZSBjb2xsZWN0ZWQKLS8vIG9i
amVjdC4gQ0Ygb2JqZWN0cyBuZWVkIHRvIGJlICJtYWRlIGNvbGxlY3RhYmxlIiBmb3IgYXV0b3Jl
bGVhc2UgdG8gd29yawotLy8gcHJvcGVybHkgdW5kZXIgR0MuCi1pbmxpbmUgaWQgSGFyZEF1dG9y
ZWxlYXNlKENGVHlwZVJlZiBvYmplY3QpCit0ZW1wbGF0ZTx0eXBlbmFtZSBSZXR1cm5UeXBlLCB0
eXBlbmFtZS4uLiBBcmd1bWVudFR5cGVzPgoraW5saW5lIFJldHVyblR5cGUgd3RmQ2FsbElNUChJ
TVAgaW1wbGVtZW50YXRpb24sIGlkIHRhcmdldCwgU0VMIHNlbGVjdG9yLCBBcmd1bWVudFR5cGVz
Li4uIGFyZ3VtZW50cykKIHsKLSNpZm5kZWYgT0JKQ19OT19HQwotICAgIGlmIChvYmplY3QpCi0g
ICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iamVjdCk7Ci0jZW5kaWYKLSNpZiAhX19oYXNfZmVh
dHVyZShvYmpjX2FyYykKLSAgICBbKGlkKW9iamVjdCBhdXRvcmVsZWFzZV07Ci0jZW5kaWYKLSAg
ICByZXR1cm4gKGlkKW9iamVjdDsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxSZXR1cm5U
eXBlICgqKShpZCwgU0VMLCBBcmd1bWVudFR5cGVzLi4uKT4oaW1wbGVtZW50YXRpb24pKHRhcmdl
dCwgc2VsZWN0b3IsIGFyZ3VtZW50cy4uLik7CiB9Ci0jZW5kaWYgLy8gX19PQkpDX18KKworI2Vu
ZGlmIC8vIF9fY3BsdXNwbHVzCiAKICNlbmRpZiAvLyBXVEZfT2JqY1J1bnRpbWVFeHRyYXNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBhZWM1MTE5YzBjNjIx
OWU1OTVkM2QwYWM5ODhjYTcyMzJmNDdlMjQxLi4xOTc2N2UyNjdiMmM0NWY3NWJhM2RkNDkwM2Yx
ZTAwYTJlZDZmYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpA
QCAtNDIwLDIxICs0MjAsMjEgQEAgc3RhdGljIGlkIEFYVGV4dE1hcmtlclJhbmdlKGlkIHN0YXJ0
TWFya2VyLCBpZCBlbmRNYXJrZXIpCiAgICAgQVNTRVJUKGVuZE1hcmtlciAhPSBuaWwpOwogICAg
IEFTU0VSVChDRkdldFR5cGVJRChzdGFydE1hcmtlcikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBl
SUQoKSk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKGVuZE1hcmtlcikgPT0gd2tHZXRBWFRleHRN
YXJrZXJUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZSh3a0NyZWF0ZUFYVGV4
dE1hcmtlclJhbmdlKChDRlR5cGVSZWYpc3RhcnRNYXJrZXIsIChDRlR5cGVSZWYpZW5kTWFya2Vy
KSk7CisgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKHdrQ3JlYXRlQVhUZXh0TWFya2VyUmFu
Z2UoKENGVHlwZVJlZilzdGFydE1hcmtlciwgKENGVHlwZVJlZillbmRNYXJrZXIpKTsKIH0KIAog
c3RhdGljIGlkIEFYVGV4dE1hcmtlclJhbmdlU3RhcnQoaWQgcmFuZ2UpCiB7CiAgICAgQVNTRVJU
KHJhbmdlICE9IG5pbCk7CiAgICAgQVNTRVJUKENGR2V0VHlwZUlEKHJhbmdlKSA9PSB3a0dldEFY
VGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOwotICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2Uod2tD
b3B5QVhUZXh0TWFya2VyUmFuZ2VTdGFydChyYW5nZSkpOworICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZSh3a0NvcHlBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KHJhbmdlKSk7CiB9CiAKIHN0YXRp
YyBpZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCByYW5nZSkKIHsKICAgICBBU1NFUlQocmFuZ2Ug
IT0gbmlsKTsKICAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFy
a2VyUmFuZ2VUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZSh3a0NvcHlBWFRl
eHRNYXJrZXJSYW5nZUVuZChyYW5nZSkpOworICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZSh3
a0NvcHlBWFRleHRNYXJrZXJSYW5nZUVuZChyYW5nZSkpOwogfQogCiAjcHJhZ21hIG1hcmsgU2Vh
cmNoIGhlbHBlcnMKQEAgLTUxOSw3ICs1MTksNyBAQCBzdGF0aWMgaWQgdGV4dE1hcmtlckZvclZp
c2libGVQb3NpdGlvbihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aQog
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAK
LSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKHdrQ3JlYXRlQVhUZXh0TWFya2VyKCZ0ZXh0TWFy
a2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiBDRkJyaWRnaW5n
UmVsZWFzZSh3a0NyZWF0ZUFYVGV4dE1hcmtlcigmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKTsKIH0KIAogLSAoaWQpdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjoo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uICYpdmlzaWJsZVBvcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0tVUkxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvS1VSTE1hYy5tbQppbmRleCBmZDRmY2ZkNWE5MjdlZDZkYjY5NmYwNDk3MDUwNmZiZjg4YTYw
MTExLi45MjM3NWM3YTM0YTA5MzE4ZjE2ZWZkY2FkNjI3Mzc1ZWRhNTkwOGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvS1VSTE1hYy5tbQpAQCAtNDksNyArNDksNyBAQCBLVVJMOjpvcGVy
YXRvciBOU1VSTCAqKCkgY29uc3QKIHsKICAgICAvLyBDcmVhdGluZyBhIHRvbGwtZnJlZSBicmlk
Z2VkIENGVVJMLCBiZWNhdXNlIGEgcmVhbCBOU1VSTCB3b3VsZCBub3QgcHJlc2VydmUgdGhlIG9y
aWdpbmFsIHN0cmluZy4KICAgICAvLyBXZSdsbCBuZWVkIGZpZGVsaXR5IHdoZW4gcm91bmQtdHJp
cHBpbmcgdmlhIENGVVJMR2V0Qnl0ZXMoKS4KLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNy
ZWF0ZUNGVVJMKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3Jl
YXRlQ0ZVUkwoKS5sZWFrUmVmKCkpOwogfQogCiBSZXRhaW5QdHI8Q0ZVUkxSZWY+IEtVUkw6OmNy
ZWF0ZUNGVVJMKCkgY29uc3QKQEAgLTU4LDEwICs1OCw4IEBAIFJldGFpblB0cjxDRlVSTFJlZj4g
S1VSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChp
c0VtcHR5KCkpIHsKLSAgICAgICAgLy8gV2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdl
ZW4gTlNVUkwgYW5kIENGVVJMIHRvCi0gICAgICAgIC8vIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBv
cnRpbmcgYm90aCBlbXB0eSBhbmQgbnVsbCB2YWx1ZXMuCi0gICAgICAgIFJldGFpblB0cjxOU1VS
TD4gZW1wdHlOU1VSTCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCIi
XSk7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJMUmVmPihlbXB0eU5TVVJM
LmdldCgpKTsKKyAgICAgICAgLy8gV2UgdXNlIHRoZSB0b2xsLWZyZWUgYnJpZGdlIGJldHdlZW4g
TlNVUkwgYW5kIENGVVJMIHRvIGNyZWF0ZSBhIENGVVJMUmVmIHN1cHBvcnRpbmcgYm90aCBlbXB0
eSBhbmQgbnVsbCB2YWx1ZXMuCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGVVJM
UmVmPihhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiIl0pLmdldCgpKTsK
ICAgICB9CiAKICAgICBVUkxDaGFyQnVmZmVyIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlTlNVUkxFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU5TVVJMRXh0cmFzLm1tCmluZGV4IGM3MjBjZDZmZWNlZjBi
MzdjYWY2OGMzMTk1ZmJhMmE2NWY0ZDQ4MzYuLmI4YWE2ZjJiOTNiY2IzODNlMzlkYTAyZGM1ZmUx
YTk2YjlmZGYwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJD
b3JlTlNVUkxFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNv
cmVOU1VSTEV4dHJhcy5tbQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbWFw
SG9zdE5hbWVXaXRoUmFuZ2UoTlNTdHJpbmcgKnN0cmluZywgTlNSYW5nZSByYW5nZSwgQk9PTCBl
bmNvCiAgICAgCiAgICAgaWYgKGVuY29kZSAmJiBbc3RyaW5nIHJhbmdlT2ZTdHJpbmc6QCIlIiBv
cHRpb25zOk5TTGl0ZXJhbFNlYXJjaCByYW5nZTpyYW5nZV0ubG9jYXRpb24gIT0gTlNOb3RGb3Vu
ZCkgewogICAgICAgICBOU1N0cmluZyAqc3Vic3RyaW5nID0gW3N0cmluZyBzdWJzdHJpbmdXaXRo
UmFuZ2U6cmFuZ2VdOwotICAgICAgICBzdWJzdHJpbmcgPSBIYXJkQXV0b3JlbGVhc2UoQ0ZVUkxD
cmVhdGVTdHJpbmdCeVJlcGxhY2luZ1BlcmNlbnRFc2NhcGVzKE5VTEwsIChDRlN0cmluZ1JlZilz
dWJzdHJpbmcsIENGU1RSKCIiKSkpOworICAgICAgICBzdWJzdHJpbmcgPSBDRkJyaWRnaW5nUmVs
ZWFzZShDRlVSTENyZWF0ZVN0cmluZ0J5UmVwbGFjaW5nUGVyY2VudEVzY2FwZXMoTlVMTCwgKENG
U3RyaW5nUmVmKXN1YnN0cmluZywgQ0ZTVFIoIiIpKSk7CiAgICAgICAgIGlmIChzdWJzdHJpbmcp
IHsKICAgICAgICAgICAgIHN0cmluZyA9IHN1YnN0cmluZzsKICAgICAgICAgICAgIHJhbmdlID0g
TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBsZW5ndGhdKTsKQEAgLTU2NCw5ICs1NjQsOSBAQCBOU1VS
TCAqVVJMV2l0aERhdGEoTlNEYXRhICpkYXRhLCBOU1VSTCAqYmFzZVVSTCkKICAgICAgICAgLy8g
KGUuZyBjYWxscyB0byBOU1VSTCAtcGF0aCkuIEhvd2V2ZXIsIHRoaXMgZnVuY3Rpb24gaXMgbm90
IHRvbGVyYW50IG9mIGlsbGVnYWwgVVRGLTggc2VxdWVuY2VzLCB3aGljaAogICAgICAgICAvLyBj
b3VsZCBlaXRoZXIgYmUgYSBtYWxmb3JtZWQgc3RyaW5nIG9yIGJ5dGVzIGluIGEgZGlmZmVyZW50
IGVuY29kaW5nLCBsaWtlIHNoaWZ0LWppcywgc28gd2UgZmFsbCBiYWNrCiAgICAgICAgIC8vIG9u
dG8gdXNpbmcgSVNPIExhdGluIDEgaW4gdGhvc2UgY2FzZXMuCi0gICAgICAgIHJlc3VsdCA9IEhh
cmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVz
LCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgKENGVVJMUmVmKWJhc2VVUkwsIFlFUykp
OworICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRl
VVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwg
KENGVVJMUmVmKWJhc2VVUkwsIFlFUykpOwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAg
ICAgIHJlc3VsdCA9IEhhcmRBdXRvcmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoQ0ZV
UkxSZWYpYmFzZVVSTCwgWUVTKSk7CisgICAgICAgICAgICByZXN1bHQgPSBDRkJyaWRnaW5nUmVs
ZWFzZShDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKE5VTEwsIGJ5dGVzLCBsZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCAoQ0ZVUkxSZWYpYmFzZVVSTCwgWUVTKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJd
OwogICAgICAgICAgICAgICAgIApAQCAtODM4LDcgKzgzOCw3IEBAIE5TU3RyaW5nICp1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCAqVVJMKQogICAgIAogICAgIHJlc3VsdCA9IG1hcEhvc3ROYW1lcyhy
ZXN1bHQsICFuZWVkc0hvc3ROYW1lRGVjb2RpbmcpOwogICAgIHJlc3VsdCA9IFtyZXN1bHQgcHJl
Y29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ107Ci0gICAgcmV0dXJuIEhhcmRBdXRv
cmVsZWFzZShjcmVhdGVTdHJpbmdXaXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5n
UmVmKXJlc3VsdCkpOworICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShjcmVhdGVTdHJpbmdX
aXRoRXNjYXBlZFVuc2FmZUNoYXJhY3RlcnMoKENGU3RyaW5nUmVmKXJlc3VsdCkpOwogfQogCiBC
T09MIGlzVXNlclZpc2libGVVUkwoTlNTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCmluZGV4IGRhOGYyZDk0MjRj
YjUwYWE2MmVhMjdmZmQxMWFjYWRkOTM2NTg1OWUuLmE4MDVlNjY4M2Y5ZWUwMmY4YzhkMGJlYjc4
MTBiYzNkOTgzNTVjYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvU3RyaW5nSW1wbE1hYy5tbQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRv
cmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIENGQnJpZGdp
bmdSZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IDlkNjQ0
OTUzYjdhOGE2MmRkYjAyZmFjZjgyMjQ4ZjU5YzBjYjAyMTguLmM4NDJlYmJhYzNmNWU1ZGJkOWRh
ZGMzZDNjOTRhMGRjZDE5MjhiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
Yk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAgLTk2LDkgKzk2LDcgQEAgLSAoTlNTdHJpbmcgKilf
d2Via2l0X3N0YXJ0dXBWb2x1bWVOYW1lCiB7CiAgICAgUmV0YWluUHRyPERBU2Vzc2lvblJlZj4g
c2Vzc2lvbiA9IGFkb3B0Q0YoREFTZXNzaW9uQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsK
ICAgICBSZXRhaW5QdHI8REFEaXNrUmVmPiBkaXNrID0gYWRvcHRDRihEQURpc2tDcmVhdGVGcm9t
Vm9sdW1lUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzZXNzaW9uLmdldCgpLCAoQ0ZVUkxSZWYp
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi8iXSkpOwotICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGRpc2tEZXNjcmlwdGlvbiA9IGFkb3B0Q0YoREFEaXNrQ29weURlc2NyaXB0aW9uKGRp
c2suZ2V0KCkpKTsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGRpc2tOYW1lID0gKE5TU3RyaW5n
ICopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlza0Rlc2NyaXB0aW9uLmdldCgpLCBrREFEaXNrRGVz
Y3JpcHRpb25Wb2x1bWVOYW1lS2V5KTsKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGRpc2tO
YW1lLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFtbKE5TU3RyaW5nICopQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoYWRvcHRDRihEQURpc2tDb3B5RGVzY3JpcHRpb24oZGlzay5nZXQoKSkpLmdldCgpLCBr
REFEaXNrRGVzY3JpcHRpb25Wb2x1bWVOYW1lS2V5KSBjb3B5XSBhdXRvcmVsZWFzZV07CiB9CiAK
IC8vIC1bTlNGaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOl0gcmV0dXJucyBOTyBpZiB0aGVy
ZSBpcyBhIGJyb2tlbiBzeW1saW5rIGF0IHRoZSBwYXRoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViTlNVUkxFeHRyYXMubW0KaW5kZXggMGFkYTJlZTMwMGI1YmQ1NWQyODA5MGE5YWE1ZTE5ZWNh
NTk4ODUxMS4uMGViM2VhMzBmZGE4YjQwYTM0MWNiMzhjN2M3MzNmZjFiNDdmNDdhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJOU1VSTEV4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYk5TVVJMRXh0cmFzLm1tCkBAIC0yMTQsOCArMjE0LDggQEAg
LSAoTlNVUkwgKilfd2ViX1VSTFdpdGhMb3dlcmNhc2VkU2NoZW1lCiAgICAgfQogICAgIAogICAg
IE5TVVJMICpyZXN1bHQgPSBjaGFuZ2VkCi0gICAgICAgID8gKE5TVVJMICopSGFyZEF1dG9yZWxl
YXNlKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMoTlVMTCwgYnVmZmVyLCBieXRlc0Zp
bGxlZCwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBuaWwsIFlFUykpCi0gICAgICAgIDogKE5TVVJM
ICopc2VsZjsKKyAgICAgICAgPyBDRkJyaWRnaW5nUmVsZWFzZShDRlVSTENyZWF0ZUFic29sdXRl
VVJMV2l0aEJ5dGVzKE5VTEwsIGJ1ZmZlciwgYnl0ZXNGaWxsZWQsIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgbmlsLCBZRVMpKQorICAgICAgICA6IHNlbGY7CiAKICAgICBpZiAoYnVmZmVyICE9IHN0
YXRpY19idWZmZXIpIHsKICAgICAgICAgZnJlZShidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KaW5kZXggOWE4ZmI1NjdiZjky
MjM5NjZkZjA0NGVkYmNlNGNmN2EzOTNlZjI5Ny4uNWIwN2I5ODA1OTJkZTIzYzBhZjI3YzkwYmQw
ZDk3NDRkMmUyMjk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJC
YXNlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJh
c2VQbHVnaW5QYWNrYWdlLm1tCkBAIC05MCw3ICs5MCw3IEBAICsgKFdlYkJhc2VQbHVnaW5QYWNr
YWdlICopcGx1Z2luV2l0aFBhdGg6KE5TU3RyaW5nICopcGx1Z2luUGF0aAogCiArIChOU1N0cmlu
ZyAqKXByZWZlcnJlZExvY2FsaXphdGlvbk5hbWUKIHsKLSAgICByZXR1cm4gSGFyZEF1dG9yZWxl
YXNlKFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZShOVUxMKSk7CisgICAgcmV0dXJu
IENGQnJpZGdpbmdSZWxlYXNlKFdLQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZShOVUxM
KSk7CiB9CiAKICNpZiBDT01QSUxFUihDTEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUERGUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlBERlJlcHJlc2VudGF0aW9uLm1tCmluZGV4IGMzYmNkOWI2ZjY1NjYzMWFmZTAw
NzFiZjEzYWE5OTExZTg2OTkzYzcuLjNkN2RlNGQ1Nzk5YTE0NjE1NGFiYjUwMjc2MjgwOTJkN2Nm
YzIxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGUmVwcmVz
ZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZSZXByZXNl
bnRhdGlvbi5tbQpAQCAtMTA3LDcgKzEwNyw3IEBAIC0gKE5TRGF0YSAqKWNvbnZlcnRQb3N0U2Ny
aXB0RGF0YVNvdXJjZVRvUERGOihOU0RhdGEgKilkYXRhCiAgICAgQ0ZSZWxlYXNlKHByb3ZpZGVy
KTsKICAgICBDRlJlbGVhc2UoY29uc3VtZXIpOwogCi0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFz
ZShyZXN1bHQpOworICAgIHJldHVybiBDRkJyaWRnaW5nUmVsZWFzZShyZXN1bHQpOwogfQogCiAt
ICh2b2lkKWZpbmlzaGVkTG9hZGluZ1dpdGhEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0
YVNvdXJjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDcwODMxMDQ4Nzk1
ODUzM2QyNGIwNGE0NmZlNmJkZWQzYWQxNDQyMzMuLjUwMDFiMTk5ZDJiZDQ5OWUyZjYwODcwZTll
YjM4OGFlYTgxMjkyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU5
MDYsNyArNTkwNiw3IEBAICsgKHZvaWQpX3NldENhY2hlTW9kZWw6KFdlYkNhY2hlTW9kZWwpY2Fj
aGVNb2RlbAogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2Nh
Y2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TU3RyaW5nICpuc3VybENhY2hlRGly
ZWN0b3J5ID0gKE5TU3RyaW5nICopSGFyZEF1dG9yZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNo
ZURpcmVjdG9yeSgpKTsKKyAgICBOU1N0cmluZyAqbnN1cmxDYWNoZURpcmVjdG9yeSA9IENGQnJp
ZGdpbmdSZWxlYXNlKFdLQ29weUZvdW5kYXRpb25DYWNoZURpcmVjdG9yeSgpKTsKICAgICBpZiAo
IW5zdXJsQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIG5zdXJsQ2FjaGVEaXJlY3RvcnkgPSBOU0hv
bWVEaXJlY3RvcnkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0KaW5kZXggNGFjNmY4Y2Q2NzhmNTY1NzdjZTc1Y2QzZmNlMTkyMTNlNTllOGI4
NS4uMzExMmEyNDUxMDM2ZTdlZTliMzVkMWQzZDI5ZmM0M2VkNGVhNzBjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBAIC0zMyw5ICszMyw5
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1OU1N0cmluZyogbnNTdHJpbmdGcm9tV2ViQ29y
ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK05TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJD
b3JlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuaW1w
bCgpID8gSGFyZEF1dG9yZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHRvQVBJKHN0cmlu
Zy5pbXBsKCkpKSkgOiBAIiI7CisgICAgcmV0dXJuIHN0cmluZy5pc0VtcHR5KCkgPyBAIiIgOiBD
RkJyaWRnaW5nUmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmluZygwLCB0b0FQSShzdHJpbmcuaW1w
bCgpKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggM2Y5OTI1
ZDBhNjVmYmE1ZmFhNDIyYjE2YmExZjIyMWY4MGJkNmI0Zi4uOWI1Y2M3MzNkODI5ZmYzZTg1MjZl
MjZiODYwNGM2ZWFkOTE5YWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAt
NDksMTQgKzQ5LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBpbmxpbmUg
TlNTdHJpbmcgKmF1dG9yZWxlYXNlZChXS1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHdrU3RyaW5nID0gYWRvcHRXSyhzdHJpbmcpOwotICAgIHJldHVy
biBbKE5TU3RyaW5nICopV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
d2tTdHJpbmcuZ2V0KCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVh
c2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRvcHRXSyhzdHJp
bmcpLmdldCgpKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgTlNVUkwgKmF1dG9yZWxlYXNlZChXS1VS
TFJlZiB1cmwpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrVVJMID0gYWRvcHRXSyh1
cmwpOwotICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgd2tVUkwuZ2V0KCkpKTsKKyAgICByZXR1cm4gQ0ZCcmlkZ2luZ1JlbGVhc2Uo
V0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYWRvcHRXSyh1cmwpLmdldCgpKSk7
CiB9CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyRGF0YSA6IE5TT2Jq
ZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQppbmRleCBlYTUy
Yjg2OTFmOTliMTRjYjJjNDg2MmI4ODk2ODlmZDdjMzZhNTQyLi4yN2JkZWFlZGUxNzliMWE0ZGE0
YTRhZmI4YWFjODQyOGIzNmNmYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0Lm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAoaWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXQKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICAKICAgICBpZiAodG9JbXBsKHJlc3VsdC5nZXQoKSktPnR5
cGUoKSA9PSBXS1N0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gSGFyZEF1dG9yZWxl
YXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIChXS1N0cmluZ1Jl
ZilyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIENGQnJpZGdpbmdSZWxlYXNlKFdLU3Ry
aW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIChXS1N0cmluZ1JlZilyZXN1bHQu
Z2V0KCkpKTsKICAgICBlbHNlIGlmICh0b0ltcGwocmVzdWx0LmdldCgpKS0+dHlwZSgpID09IFdL
Qm9vbGVhbkdldFR5cGVJRCgpKQogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOldLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmVzdWx0Lmdl
dCgpKSldOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggODZjMjNlNmMzODFjMjJjMjk1MzMwNzRjODZkNDA2MDAxMmQ5NDI2OS4uZTc4NzQzMjU0
NTk3ZTM2ZjMyMWRmYWMyMmU3ODc2ZDliYTY3NmZmMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA4LTMxICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBObyBuZWVkIGZv
ciBIYXJkQXV0b3JlbGVhc2UsIHdoaWNoIGlzIHNhbWUgYXMgQ0ZCcmlkZ2luZ1JlbGVhc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDU2OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcCk6IFVzZSBDRkJyaWRn
aW5nUmVsZWFzZS4KKwogMjAxMy0wOC0zMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxl
LmNvbT4KIAogICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBidWlsZCBmaXguCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNDUwYjIyYWJlNDhmMGY2
YzcwMzg1YThmYTFlMDNiNjlkMTUzZGNhZi4uN2FhNjE2OGE2MDdkNmE1OWNlNjBiZGM4ZDAzM2Uw
NjAwMWQxMjhiMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMTE5NSwxMSArMTE5NSwxMSBAQCB2b2lkIGR1bXAoKQogICAgICAgICAgICAgcmVzdWx0
TWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RS
dW5uZXItPmR1bXBET01Bc1dlYkFyY2hpdmUoKSkgewogICAgICAgICAgICAgV2ViQXJjaGl2ZSAq
d2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1lIERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXTsKLSAgICAg
ICAgICAgIHJlc3VsdFN0cmluZyA9IEhhcmRBdXRvcmVsZWFzZShjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOworICAgICAgICAg
ICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKChDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKICAgICAgICAgICAg
IHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9
IGVsc2UgaWYgKGdUZXN0UnVubmVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAg
ICAgICAgIFdlYkFyY2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3
ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IEhhcmRBdXRvcmVsZWFzZShj
cmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJjaGl2ZSBk
YXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoY3Jl
YXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0
YV0pKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFy
Y2hpdmUiOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IFttYWlu
RnJhbWUgcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkZvclByaW50aW5nOmdUZXN0
UnVubmVyLT5pc1ByaW50aW5nKCldOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>