<?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>140296</bug_id>
          
          <creation_ts>2015-01-09 10:20:46 -0800</creation_ts>
          <short_desc>Rename GraphicsLayerAnimation to TextureMapperAnimation</short_desc>
          <delta_ts>2015-01-09 11:56:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Gwang Yoon Hwang">yoon</reporter>
          <assigned_to name="Gwang Yoon Hwang">yoon</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060167</commentid>
    <comment_count>0</comment_count>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-01-09 10:20:46 -0800</bug_when>
    <thetext>Rename GraphicsLayerAnimation to TextureMapperAnimation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060168</commentid>
    <comment_count>1</comment_count>
      <attachid>244348</attachid>
    <who name="Gwang Yoon Hwang">yoon</who>
    <bug_when>2015-01-09 10:22:17 -0800</bug_when>
    <thetext>Created attachment 244348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060212</commentid>
    <comment_count>2</comment_count>
      <attachid>244348</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 11:55:58 -0800</bug_when>
    <thetext>Comment on attachment 244348
Patch

Clearing flags on attachment: 244348

Committed r178182: &lt;http://trac.webkit.org/changeset/178182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060213</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-09 11:56:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244348</attachid>
            <date>2015-01-09 10:22:17 -0800</date>
            <delta_ts>2015-01-09 11:55:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140296-20150110032222.patch</filename>
            <type>text/plain</type>
            <size>62538</size>
            <attacher name="Gwang Yoon Hwang">yoon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4MTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ1MTNjYTg3YjRjYWVl
YWQ1MTc0MWRjMGUyYjg1YTk4NTBiMDJlZC4uOGI2YzkyYWI0ZThhYzIwZjAwYzBjMTAwMmM5ZmFm
YjUxMTc4ZjJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE1LTAxLTA5ICBHd2Fu
ZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbmFtZSBHcmFwaGlj
c0xheWVyQW5pbWF0aW9uIHRvIFRleHR1cmVNYXBwZXJBbmltYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDI5NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb24g
aXMgb25seSB1c2VkIGJ5IFRleHR1cmVNYXBwZXIgYW5kIENvb3JkaW5hdGVkR3JhcGhpY3MuCisg
ICAgICAgIFRoaXMgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwLgorICAgICAgICBBbmQgdGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgaXRzIG5hbWUgdG8gVGV4
dHVyZU1hcHBlckFuaW1hdGlvbiB0byByZW1vdmUgYW1iaWd1aXR5LgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIHRoaXMgaXMgYSBzaW1wbHkgcmVmYWN0b3JpbmcuCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0QW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5jcHAuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
aDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJBbmltYXRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0QW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGRBbmltYXRpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg6CisKIDIwMTUtMDEtMDkgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQ3Jhc2ggYXQgLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgYWNjZXNzaWJpbGl0eVRpdGxlXSArIDMxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggM2JjMjAwY2E2YjQyYjA2ZjA0ZjM2NjA3ZDk4OTJjOTVkNTg3NTI0Ni4uZjhjMmU5NmM2
NGFlODM2OThlNzZjNDE3ODA5NmQwMjk4ZWYxMzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE1LTAxLTA5ICBHd2FuZyBZb29uIEh3YW5nICA8eW9vbkBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJlbmFtZSBHcmFwaGljc0xheWVyQW5pbWF0aW9uIHRvIFRleHR1cmVNYXBwZXJBbmlt
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MDI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdy
YXBoaWNzTGF5ZXJBbmltYXRpb24gaXMgY2hhbmdlZCB0byBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgIChoZWFkZXJz
X2Zvcl90eXBlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+OjpkZWNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb25zPjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucz46OmRlY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbj46OmVu
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXll
ckFuaW1hdGlvbj46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8R3JhcGhpY3NMYXllckFuaW1hdGlvbnM+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKwogMjAxNS0wMS0wOCAgQmVuamFtaW4g
UG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gU3RhcnQgYSBw
cm90b3R5cGUgZm9yIGRlY2xhcmF0aXZlIHNpdGUgc3BlY2lmaWMgZXh0ZW5zaW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5MjhkOTU1MTQ0ODZlY2EwNzVlMmQ0OGM0ZGY1OTYwZjMwZDdmNWUx
Li4xOTVmOGZlOTRhNjVkNDVmMWM1NTllOTI4ZWY0OGEyZGZkNGE4MjA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjA3OSw3ICsyMDc5LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckFuaW1hdGlvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBAIC0yMTQxLDYgKzIxNDAsNyBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnR5cGUvT3BlblR5cGVNYXRoRGF0YS5j
cHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAorICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggOGI2NmNkZmI0NDE5MmZlMjg5NWRmMGQ3ODJjZjY1ODY2ZDQ2YjQ5Yy4uZWFlNDcxNDIxZTM0
YjU3OGJhNDc3Y2NiMmRjMDQ3NmEyMzg4NjM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC03NDgxLDcgKzc0ODEsNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZ3B1XFRpbGluZ0RhdGEuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9ybWF0
Q29udmVydGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEdyYXBoaWNzQ29udGV4dDNELmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcR3JhcGhpY3NMYXllclRy
YW5zZm9ybS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xnc3RyZWFtZXJcQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIj4KICAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC03NjMyLDYgKzc2
MzEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4
bWFwXGNvb3JkaW5hdGVkXFVwZGF0ZUF0bGFzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0
ZXhtYXBcVGV4dHVyZU1hcHBlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRleHR1
cmVNYXBwZXJHTC5jcHAiIC8+CkBAIC0xOTQxOCw3ICsxOTQxOCw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xncHVcVGlsaW5nRGF0YS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcRm9ybWF0Q29udmVydGVy
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xHcmFw
aGljc0NvbnRleHQzRC5oIiAvPgotICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcR3JhcGhpY3NMYXllckZhY3RvcnkuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm0uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXGdzdHJlYW1lclxBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oIiAvPgpAQCAtMTk0NTUs
NiArMTk0NTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcdGV4bWFwXGNvb3JkaW5hdGVkXFVwZGF0ZUF0bGFzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XHRleG1hcFxUZXh0dXJlTWFwcGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRleHR1cmVNYXBw
ZXJHTC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IGIxNjI2ODkzYTQ0NWYyZThlN2M2NzgzMzE5MzUy
NjVjM2U0ZmMxMjUuLjZiN2FjN2VlZDM0YWVhOWZiNTA1ZmEzYjhmNjI1ZDA2Yjg2YTY2ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ou
ZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qLmZpbHRlcnMKQEAgLTY4MTEsNiArNjgxMSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXBcVGV4dHVyZU1hcHBlci5jcHAiPgogICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwXFRleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcdGV4bWFwPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC02ODY4LDkgKzY4NzEsNiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGFnZVxzY3JvbGxpbmdcY29vcmRpbmF0ZWRncmFwaGljc1xTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGVDb29yZGluYXRlZEdyYXBoaWNzLmNwcCI+CiAgICAgICA8RmlsdGVy
PnBhZ2Vcc2Nyb2xsaW5nXGNvb3JkaW5hdGVkZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29t
cGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBo
aWNzTGF5ZXJBbmltYXRpb24uY3BwIj4KLSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8
L0ZpbHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE0NzQ3
LDYgKzE0NzQ3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFw
aGljc1x0ZXhtYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
LmgiPgorICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x0ZXhtYXA8L0ZpbHRlcj4KKyAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXHRleG1hcFxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiPgogICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljc1x0ZXhtYXA8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTE0
ODA3LDkgKzE0ODEwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhZ2Vcc2Nyb2xs
aW5nXGNvb3JkaW5hdGVkZ3JhcGhpY3NcU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmgiPgogICAgICAgPEZpbHRlcj5wYWdlXHNjcm9sbGluZ1xjb29yZGluYXRlZGdyYXBo
aWNzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgiPgotICAgICAgPEZp
bHRlcj5wbGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcR3JhcGhpY3NMYXllckZhY3Rv
cnkuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwN2E0MzIwOWZlN2ZiM2I4MTAyNzhkZWExZTI5NDc3MTY5ZjljMWE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzk4ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5pbWF0aW9uLmgi
Ci0KLSNpbmNsdWRlICJMYXlvdXRTaXplLmgiCi0jaW5jbHVkZSAiVW5pdEJlemllci5oIgotI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBpbmxpbmUgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kRnVuYyhGaWx0ZXJPcGVy
YXRpb24qIGZyb21PcCwgRmlsdGVyT3BlcmF0aW9uKiB0b09wLCBkb3VibGUgcHJvZ3Jlc3MsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkKLXsK
LSAgICBBU1NFUlQodG9PcCk7Ci0gICAgaWYgKHRvT3AtPmJsZW5kaW5nTmVlZHNSZW5kZXJlclNp
emUoKSkKLSAgICAgICAgcmV0dXJuIHRvT3AtPmJsZW5kKGZyb21PcCwgcHJvZ3Jlc3MsIExheW91
dFNpemUoc2l6ZSksIGJsZW5kVG9QYXNzdGhyb3VnaCk7Ci0KLSAgICByZXR1cm4gdG9PcC0+Ymxl
bmQoZnJvbU9wLCBwcm9ncmVzcywgYmxlbmRUb1Bhc3N0aHJvdWdoKTsKLX0KLQotCi1zdGF0aWMg
RmlsdGVyT3BlcmF0aW9ucyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmcm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBj
b25zdCBGbG9hdFNpemUmIGJveFNpemUpCi17Ci0gICAgLy8gRmlyc3QgZnJhbWUgb2YgYW4gYW5p
bWF0aW9uLgotICAgIGlmICghcHJvZ3Jlc3MpCi0gICAgICAgIHJldHVybiBmcm9tOwotCi0gICAg
Ly8gTGFzdCBmcmFtZSBvZiBhbiBhbmltYXRpb24uCi0gICAgaWYgKHByb2dyZXNzID09IDEpCi0g
ICAgICAgIHJldHVybiB0bzsKLQotICAgIGlmICghZnJvbS5pc0VtcHR5KCkgJiYgIXRvLmlzRW1w
dHkoKSAmJiAhZnJvbS5vcGVyYXRpb25zTWF0Y2godG8pKQotICAgICAgICByZXR1cm4gdG87Ci0K
LSAgICBGaWx0ZXJPcGVyYXRpb25zIHJlc3VsdDsKLQotICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZy
b20ub3BlcmF0aW9ucygpLnNpemUoKTsKLSAgICBzaXplX3QgdG9TaXplID0gdG8ub3BlcmF0aW9u
cygpLnNpemUoKTsKLSAgICBzaXplX3Qgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRp
b25zKClbaV0uZ2V0KCkgOiAwOwotICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09w
ID0gKGkgPCB0b1NpemUpID8gdG8ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKLSAgICAgICAg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9t
T3AuZ2V0KCksIHRvT3AuZ2V0KCksIHByb2dyZXNzLCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVu
ZEZ1bmMoMCwgZnJvbU9wLmdldCgpLCBwcm9ncmVzcywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKLSAg
ICAgICAgaWYgKGJsZW5kZWRPcCkKLSAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBw
ZW5kKGJsZW5kZWRPcCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gaWRlbnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUoKTsKLSAgICAgICAgICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQub3BlcmF0aW9ucygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5k
KGZyb21PcCA/IGZyb21PcCA6IGlkZW50aXR5T3ApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGJvb2wgc2hvdWxkUmV2ZXJzZUFuaW1hdGlvblZh
bHVlKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IGxvb3BDb3Vu
dCkKLXsKLSAgICBpZiAoKChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rp
b25BbHRlcm5hdGUpICYmIChsb29wQ291bnQgJiAxKSkKLSAgICAgICAgfHwgKChkaXJlY3Rpb24g
PT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKSAmJiAhKGxv
b3BDb3VudCAmIDEpKQotICAgICAgICB8fCBkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRp
b25EaXJlY3Rpb25SZXZlcnNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLXN0YXRpYyBkb3VibGUgbm9ybWFsaXplZEFuaW1hdGlvblZhbHVlKGRvdWJsZSBy
dW5uaW5nVGltZSwgZG91YmxlIGR1cmF0aW9uLCBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24sIGRvdWJsZSBpdGVyYXRpb25Db3VudCkKLXsKLSAgICBpZiAoIWR1cmF0aW9u
KQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGNvbnN0IGludCBsb29wQ291bnQgPSBydW5uaW5n
VGltZSAvIGR1cmF0aW9uOwotICAgIGNvbnN0IGRvdWJsZSBsYXN0RnVsbExvb3AgPSBkdXJhdGlv
biAqIGRvdWJsZShsb29wQ291bnQpOwotICAgIGNvbnN0IGRvdWJsZSByZW1haW5kZXIgPSBydW5u
aW5nVGltZSAtIGxhc3RGdWxsTG9vcDsKLSAgICAvLyBJZ25vcmUgcmVtYWluZGVyIHdoZW4gd2Un
dmUgcmVhY2hlZCB0aGUgZW5kIG9mIGFuaW1hdGlvbi4KLSAgICBjb25zdCBkb3VibGUgbm9ybWFs
aXplZCA9IChsb29wQ291bnQgPT0gaXRlcmF0aW9uQ291bnQpID8gMS4wIDogKHJlbWFpbmRlciAv
IGR1cmF0aW9uKTsKLQotICAgIHJldHVybiBzaG91bGRSZXZlcnNlQW5pbWF0aW9uVmFsdWUoZGly
ZWN0aW9uLCBsb29wQ291bnQpID8gMSAtIG5vcm1hbGl6ZWQgOiBub3JtYWxpemVkOwotfQotCi1z
dGF0aWMgZG91YmxlIG5vcm1hbGl6ZWRBbmltYXRpb25WYWx1ZUZvckZpbGxzRm9yd2FyZHMoZG91
YmxlIGl0ZXJhdGlvbkNvdW50LCBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24pCi17Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlv
bk5vcm1hbCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBBbmltYXRp
b246OkFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiBzaG91bGRSZXZlcnNlQW5pbWF0aW9uVmFsdWUoZGlyZWN0aW9uLCBpdGVyYXRpb25Db3Vu
dCkgPyAxIDogMDsKLX0KLQotc3RhdGljIGZsb2F0IGFwcGx5T3BhY2l0eUFuaW1hdGlvbihmbG9h
dCBmcm9tT3BhY2l0eSwgZmxvYXQgdG9PcGFjaXR5LCBkb3VibGUgcHJvZ3Jlc3MpCi17Ci0gICAg
Ly8gT3B0aW1pemF0aW9uOiBzcGVjaWFsIGNhc2UgdGhlIGVkZ2UgdmFsdWVzICgwIGFuZCAxKS4K
LSAgICBpZiAocHJvZ3Jlc3MgPT0gMS4wKQotICAgICAgICByZXR1cm4gdG9PcGFjaXR5OwotCi0g
ICAgaWYgKCFwcm9ncmVzcykKLSAgICAgICAgcmV0dXJuIGZyb21PcGFjaXR5OwotCi0gICAgcmV0
dXJuIGZyb21PcGFjaXR5ICsgcHJvZ3Jlc3MgKiAodG9PcGFjaXR5IC0gZnJvbU9wYWNpdHkpOwot
fQotCi1zdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZUVwc2lsb24oZG91YmxlIGR1cmF0aW9uKQot
ewotICAgIHJldHVybiAxLjAgLyAoMjAwLjAgKiBkdXJhdGlvbik7Ci19Ci0KLXN0YXRpYyBpbmxp
bmUgZG91YmxlIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbihkb3VibGUgcDF4LCBkb3VibGUgcDF5
LCBkb3VibGUgcDJ4LCBkb3VibGUgcDJ5LCBkb3VibGUgdCwgZG91YmxlIGR1cmF0aW9uKQotewot
ICAgIHJldHVybiBVbml0QmV6aWVyKHAxeCwgcDF5LCBwMngsIHAyeSkuc29sdmUodCwgc29sdmVF
cHNpbG9uKGR1cmF0aW9uKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNG
dW5jdGlvbihpbnQgbnVtU3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0KQotewotICAg
IGlmIChzdGVwQXRTdGFydCkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWluKDEuMCwgKGZsb29yKG51
bVN0ZXBzICogdCkgKyAxKSAvIG51bVN0ZXBzKTsKLSAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMg
KiB0KSAvIG51bVN0ZXBzOwotfQotCi1zdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVu
Y3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVz
cywgZG91YmxlIGR1cmF0aW9uKQotewotICAgIGlmICghdGltaW5nRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiBwcm9ncmVzczsKLQotICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+
KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlv
bihjdGYtPngxKCksIGN0Zi0+eTEoKSwgY3RmLT54MigpLCBjdGYtPnkyKCksIHByb2dyZXNzLCBk
dXJhdGlvbik7Ci0gICAgfQotCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5n
RnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBz
dGF0aWNfY2FzdDxjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwot
ICAgICAgICByZXR1cm4gc29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBz
dGYtPnN0ZXBBdFN0YXJ0KCksIGRvdWJsZShwcm9ncmVzcykpOwotICAgIH0KLQotICAgIHJldHVy
biBwcm9ncmVzczsKLX0KLQotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNm
b3JtQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEZsb2F0U2l6ZSYgYm94
U2l6ZSwgYm9vbCBsaXN0c01hdGNoKQotewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJp
eDsKLQotICAgIC8vIEZpcnN0IGZyYW1lIG9mIGFuIGFuaW1hdGlvbi4KLSAgICBpZiAoIXByb2dy
ZXNzKSB7Ci0gICAgICAgIGZyb20uYXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKLSAgICAgICAgcmV0
dXJuIG1hdHJpeDsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IGZyYW1lIG9mIGFuIGFuaW1hdGlvbi4K
LSAgICBpZiAocHJvZ3Jlc3MgPT0gMSkgewotICAgICAgICB0by5hcHBseShib3hTaXplLCBtYXRy
aXgpOwotICAgICAgICByZXR1cm4gbWF0cml4OwotICAgIH0KLQotICAgIC8vIElmIHdlIGhhdmUg
aW5jb21wYXRpYmxlIG9wZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGluZyBtYXRy
aWNlcy4KLSAgICBpZiAoIWxpc3RzTWF0Y2gpIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggZnJvbU1hdHJpeDsKLSAgICAgICAgdG8uYXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKLSAgICAg
ICAgZnJvbS5hcHBseShib3hTaXplLCBmcm9tTWF0cml4KTsKLSAgICAgICAgbWF0cml4LmJsZW5k
KGZyb21NYXRyaXgsIHByb2dyZXNzKTsKLSAgICAgICAgcmV0dXJuIG1hdHJpeDsKLSAgICB9Ci0K
LSAgICAvLyBBbmltYXRpb24gdG8gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBpZiAo
IXRvLnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoZnJvbSk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5vcGVyYXRpb25zKCkuc2l6
ZSgpOyArK2kpCi0gICAgICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoMCwg
cHJvZ3Jlc3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOwotICAgICAgICByZXR1cm4g
bWF0cml4OwotICAgIH0KLQotICAgIC8vIEFuaW1hdGlvbiBmcm9tICItd2Via2l0LXRyYW5zZm9y
bTogbm9uZSIuCi0gICAgaWYgKCFmcm9tLnNpemUoKSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIGJsZW5kZWQodG8pOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5k
ZWQub3BlcmF0aW9ucygpLnNpemUoKTsgKytpKQotICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRp
b25zKClbaV0tPmJsZW5kKDAsIDEuIC0gcHJvZ3Jlc3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJv
eFNpemUpOwotICAgICAgICByZXR1cm4gbWF0cml4OwotICAgIH0KLQotICAgIC8vIE5vcm1hbCBh
bmltYXRpb24gd2l0aCBhIG1hdGNoaW5nIG9wZXJhdGlvbiBsaXN0LgotICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbnMgYmxlbmRlZCh0byk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGVuZGVk
Lm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkKLSAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClb
aV0tPmJsZW5kKGZyb20uYXQoaSksIHByb2dyZXNzLCAhZnJvbS5hdChpKSktPmFwcGx5KG1hdHJp
eCwgYm94U2l6ZSk7Ci0gICAgcmV0dXJuIG1hdHJpeDsKLX0KLQotc3RhdGljIGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlv
blZhbHVlJiBhbmltVmFsdWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKLXsKLSAgICBpZiAoYW5p
bVZhbHVlLnRpbWluZ0Z1bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiBhbmltVmFsdWUudGltaW5n
RnVuY3Rpb24oKTsKLSAgICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0
dXJuIGFuaW0tPnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7Ci0KLSAgICByZXR1cm4gQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7Ci19Ci0KLUdyYXBoaWNz
TGF5ZXJBbmltYXRpb246OkdyYXBoaWNzTGF5ZXJBbmltYXRpb24oY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYga2V5ZnJhbWVzLCBjb25zdCBGbG9hdFNpemUmIGJv
eFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBkb3VibGUgc3RhcnRUaW1lLCBib29s
IGxpc3RzTWF0Y2gpCi0gICAgOiBtX2tleWZyYW1lcyhrZXlmcmFtZXMpCi0gICAgLCBtX2JveFNp
emUoYm94U2l6ZSkKLSAgICAsIG1fYW5pbWF0aW9uKEFuaW1hdGlvbjo6Y3JlYXRlKCphbmltYXRp
b24pKQotICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX2xpc3RzTWF0Y2gobGlzdHNNYXRjaCkK
LSAgICAsIG1fc3RhcnRUaW1lKHN0YXJ0VGltZSkKLSAgICAsIG1fcGF1c2VUaW1lKDApCi0gICAg
LCBtX3RvdGFsUnVubmluZ1RpbWUoMCkKLSAgICAsIG1fbGFzdFJlZnJlc2hlZFRpbWUobV9zdGFy
dFRpbWUpCi0gICAgLCBtX3N0YXRlKFBsYXlpbmdTdGF0ZSkKLXsKLX0KLQotdm9pZCBHcmFwaGlj
c0xheWVyQW5pbWF0aW9uOjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmlt
YXRpb25WYWx1ZSYgZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVz
cykKLXsKLSAgICBzd2l0Y2ggKG1fa2V5ZnJhbWVzLnByb3BlcnR5KCkpIHsKLSAgICBjYXNlIEFu
aW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVkT3BhY2l0
eShhcHBseU9wYWNpdHlBbmltYXRpb24oKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUmPihmcm9tKS52YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUmPih0bykudmFsdWUoKSksIHByb2dyZXNzKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAgIGNsaWVudC0+c2V0
QW5pbWF0ZWRUcmFuc2Zvcm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxj
b25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywgbV9i
b3hTaXplLCBtX2xpc3RzTWF0Y2gpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVdlYmtpdEZpbHRlcjoKLSAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRl
cnMoYXBwbHlGaWx0ZXJBbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9u
VmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25W
YWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci19
Ci0KLWJvb2wgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6aXNBY3RpdmUoKSBjb25zdAotewotICAg
IGlmIChzdGF0ZSgpICE9IFN0b3BwZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICByZXR1cm4gbV9hbmltYXRpb24tPmZpbGxzRm9yd2FyZHMoKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0xheWVyQW5pbWF0aW9uczo6aGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3Bl
cnR5SUQgdHlwZSkgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYW5pbWF0
aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hbmltYXRpb25zW2ldLmlzQWN0aXZl
KCkgJiYgbV9hbmltYXRpb25zW2ldLnByb3BlcnR5KCkgPT0gdHlwZSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgR3JhcGhpY3NM
YXllckFuaW1hdGlvbnM6Omhhc1J1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKLXsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBp
ZiAobV9hbmltYXRpb25zW2ldLnN0YXRlKCkgPT0gR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6UGxh
eWluZ1N0YXRlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmFwcGx5KENsaWVudCog
Y2xpZW50KQotewotICAgIGlmICghaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
ZG91YmxlIHRvdGFsUnVubmluZ1RpbWUgPSBjb21wdXRlVG90YWxSdW5uaW5nVGltZSgpOwotICAg
IGRvdWJsZSBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVkQW5pbWF0aW9uVmFsdWUodG90YWxS
dW5uaW5nVGltZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCksIG1fYW5pbWF0aW9uLT5kaXJlY3Rp
b24oKSwgbV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCkpOwotCi0gICAgaWYgKG1fYW5pbWF0
aW9uLT5pdGVyYXRpb25Db3VudCgpICE9IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0
ZSAmJiB0b3RhbFJ1bm5pbmdUaW1lID49IG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogbV9hbmlt
YXRpb24tPml0ZXJhdGlvbkNvdW50KCkpIHsKLSAgICAgICAgc2V0U3RhdGUoU3RvcHBlZFN0YXRl
KTsKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9uLT5maWxsc0ZvcndhcmRzKCkpCi0gICAgICAgICAg
ICBub3JtYWxpemVkVmFsdWUgPSBub3JtYWxpemVkQW5pbWF0aW9uVmFsdWVGb3JGaWxsc0Zvcndh
cmRzKG1fYW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgpLCBtX2FuaW1hdGlvbi0+ZGlyZWN0aW9u
KCkpOwotICAgIH0KLQotICAgIGlmICghbm9ybWFsaXplZFZhbHVlKSB7Ci0gICAgICAgIGFwcGx5
SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9rZXlmcmFtZXMuYXQoMSksIDAp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PSAx
LjApIHsKLSAgICAgICAgYXBwbHlJbnRlcm5hbChjbGllbnQsIG1fa2V5ZnJhbWVzLmF0KG1fa2V5
ZnJhbWVzLnNpemUoKSAtIDIpLCBtX2tleWZyYW1lcy5hdChtX2tleWZyYW1lcy5zaXplKCkgLSAx
KSwgMSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKG1fa2V5ZnJhbWVzLnNpemUo
KSA9PSAyKSB7Ci0gICAgICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9
IHRpbWluZ0Z1bmN0aW9uRm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksIG1fYW5p
bWF0aW9uLmdldCgpKTsKLSAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5j
dGlvbih0aW1pbmdGdW5jdGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRp
b24oKSk7Ci0gICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwg
bV9rZXlmcmFtZXMuYXQoMSksIG5vcm1hbGl6ZWRWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7
ICsraSkgewotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgZnJvbSA9IG1fa2V5ZnJhbWVz
LmF0KGkpOwotICAgICAgICBjb25zdCBBbmltYXRpb25WYWx1ZSYgdG8gPSBtX2tleWZyYW1lcy5h
dChpICsgMSk7Ci0gICAgICAgIGlmIChmcm9tLmtleVRpbWUoKSA+IG5vcm1hbGl6ZWRWYWx1ZSB8
fCB0by5rZXlUaW1lKCkgPCBub3JtYWxpemVkVmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBub3JtYWxpemVkVmFsdWUgPSAobm9ybWFsaXplZFZhbHVlIC0gZnJvbS5rZXlU
aW1lKCkpIC8gKHRvLmtleVRpbWUoKSAtIGZyb20ua2V5VGltZSgpKTsKLSAgICAgICAgY29uc3Qg
VGltaW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRp
b25WYWx1ZShmcm9tLCBtX2FuaW1hdGlvbi5nZXQoKSk7Ci0gICAgICAgIG5vcm1hbGl6ZWRWYWx1
ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwg
bV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwotICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwg
ZnJvbSwgdG8sIG5vcm1hbGl6ZWRWYWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQot
ZG91YmxlIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OmNvbXB1dGVUb3RhbFJ1bm5pbmdUaW1lKCkK
LXsKLSAgICBpZiAoc3RhdGUoKSA9PSBQYXVzZWRTdGF0ZSkKLSAgICAgICAgcmV0dXJuIG1fcGF1
c2VUaW1lOwotCi0gICAgZG91YmxlIG9sZExhc3RSZWZyZXNoZWRUaW1lID0gbV9sYXN0UmVmcmVz
aGVkVGltZTsKLSAgICBtX2xhc3RSZWZyZXNoZWRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7Ci0gICAgbV90b3RhbFJ1bm5pbmdUaW1lICs9IG1fbGFzdFJlZnJlc2hlZFRpbWUg
LSBvbGRMYXN0UmVmcmVzaGVkVGltZTsKLSAgICByZXR1cm4gbV90b3RhbFJ1bm5pbmdUaW1lOwot
fQotCi12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OnBhdXNlKGRvdWJsZSB0aW1lKQotewot
ICAgIHNldFN0YXRlKFBhdXNlZFN0YXRlKTsKLSAgICBtX3BhdXNlVGltZSA9IHRpbWU7Ci19Ci0K
LXZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbjo6cmVzdW1lKCkKLXsKLSAgICBzZXRTdGF0ZShQ
bGF5aW5nU3RhdGUpOwotICAgIG1fdG90YWxSdW5uaW5nVGltZSA9IG1fcGF1c2VUaW1lOwotICAg
IG1fbGFzdFJlZnJlc2hlZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLX0K
LQotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uczo6YWRkKGNvbnN0IEdyYXBoaWNzTGF5ZXJB
bmltYXRpb24mIGFuaW1hdGlvbikKLXsKLSAgICAvLyBSZW1vdmUgdGhlIG9sZCBzdGF0ZSBpZiB3
ZSBhcmUgcmVzdW1pbmcgYSBwYXVzZWQgYW5pbWF0aW9uLgotICAgIHJlbW92ZShhbmltYXRpb24u
bmFtZSgpLCBhbmltYXRpb24ucHJvcGVydHkoKSk7Ci0KLSAgICBtX2FuaW1hdGlvbnMuYXBwZW5k
KGFuaW1hdGlvbik7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM6OnBhdXNlKGNv
bnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIG9mZnNldCkKLXsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV9hbmltYXRp
b25zW2ldLm5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgbV9hbmltYXRpb25zW2ldLnBhdXNl
KG9mZnNldCk7Ci0gICAgfQotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOjpzdXNw
ZW5kKGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FuaW1h
dGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9uc1tpXS5wYXVzZShvZmZzZXQp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOjpyZXN1bWUoKQotewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytpKQotICAgICAgICBt
X2FuaW1hdGlvbnNbaV0ucmVzdW1lKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlv
bnM6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgZm9yIChpbnQgaSA9IG1fYW5p
bWF0aW9ucy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBpZiAobV9hbmltYXRp
b25zW2ldLm5hbWUoKSA9PSBuYW1lKQotICAgICAgICAgICAgbV9hbmltYXRpb25zLnJlbW92ZShp
KTsKLSAgICB9Ci19Ci0KLXZvaWQgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM6OnJlbW92ZShjb25z
dCBTdHJpbmcmIG5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKLXsKLSAgICBmb3Ig
KGludCBpID0gbV9hbmltYXRpb25zLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAg
IGlmIChtX2FuaW1hdGlvbnNbaV0ubmFtZSgpID09IG5hbWUgJiYgbV9hbmltYXRpb25zW2ldLnBy
b3BlcnR5KCkgPT0gcHJvcGVydHkpCi0gICAgICAgICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKGkp
OwotICAgIH0KLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQW5pbWF0aW9uczo6YXBwbHkoR3JhcGhp
Y3NMYXllckFuaW1hdGlvbjo6Q2xpZW50KiBjbGllbnQpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2FuaW1hdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fYW5pbWF0aW9uc1tp
XS5hcHBseShjbGllbnQpOwotfQotCi1HcmFwaGljc0xheWVyQW5pbWF0aW9ucyBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uczo6Z2V0QWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Ci17Ci0gICAgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMgYWN0aXZlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9h
bmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2FuaW1hdGlvbnNbaV0uaXNB
Y3RpdmUoKSkKLSAgICAgICAgICAgIGFjdGl2ZS5hZGQobV9hbmltYXRpb25zW2ldKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGFjdGl2ZTsKLX0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZmRlMmY4MzAzM2VmYTZhOTA2ZDM0NmZlZjI2MDkyNzI0N2U5OTJi
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCi0KLSBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotICovCi0KLSNpZm5kZWYgR3JhcGhpY3NMYXllckFuaW1hdGlvbl9oCi0jZGVmaW5lIEdyYXBo
aWNzTGF5ZXJBbmltYXRpb25faAotCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbiB7Ci1wdWJsaWM6Ci0gICAgZW51bSBBbmltYXRp
b25TdGF0ZSB7IFBsYXlpbmdTdGF0ZSwgUGF1c2VkU3RhdGUsIFN0b3BwZWRTdGF0ZSB9OwotICAg
IGNsYXNzIENsaWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5p
bWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldEFuaW1hdGVkRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgPSAw
OwotICAgIH07Ci0KLSAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9uKCkKLSAgICAgICAgOiBtX2tl
eWZyYW1lcyhBbmltYXRlZFByb3BlcnR5SW52YWxpZCkKLSAgICB7IH0KLSAgICBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgZG91YmxlLCBib29sKTsKLSAgICB2b2lk
IGFwcGx5KENsaWVudCopOwotICAgIHZvaWQgcGF1c2UoZG91YmxlKTsKLSAgICB2b2lkIHJlc3Vt
ZSgpOwotICAgIGRvdWJsZSBjb21wdXRlVG90YWxSdW5uaW5nVGltZSgpOwotICAgIEFuaW1hdGlv
blN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgIHZvaWQgc2V0U3Rh
dGUoQW5pbWF0aW9uU3RhdGUgcywgZG91YmxlIHBhdXNlVGltZSA9IDApCi0gICAgewotICAgICAg
ICBtX3N0YXRlID0gczsKLSAgICAgICAgbV9wYXVzZVRpbWUgPSBwYXVzZVRpbWU7Ci0gICAgfQot
ICAgIEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5ZnJh
bWVzLnByb3BlcnR5KCk7IH0KLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7Ci0gICAgU3RyaW5n
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KLSAgICBGbG9hdFNpemUgYm94U2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYm94U2l6ZTsgfQotICAgIGRvdWJsZSBzdGFydFRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQotICAgIGRvdWJsZSBwYXVzZVRpbWUoKSBjb25zdCB7
IHJldHVybiBtX3BhdXNlVGltZTsgfQotICAgIFBhc3NSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbi5nZXQoKTsgfQotICAgIGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMoKSBjb25zdCB7IHJldHVybiBtX2tleWZyYW1lczsgfQot
ICAgIGJvb2wgbGlzdHNNYXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdHNNYXRjaDsgfQotCi1w
cml2YXRlOgotICAgIHZvaWQgYXBwbHlJbnRlcm5hbChDbGllbnQqLCBjb25zdCBBbmltYXRpb25W
YWx1ZSYgZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7Ci0g
ICAgS2V5ZnJhbWVWYWx1ZUxpc3QgbV9rZXlmcmFtZXM7Ci0gICAgRmxvYXRTaXplIG1fYm94U2l6
ZTsKLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsKLSAgICBTdHJpbmcgbV9uYW1l
OwotICAgIGJvb2wgbV9saXN0c01hdGNoOwotICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKLSAgICBk
b3VibGUgbV9wYXVzZVRpbWU7Ci0gICAgZG91YmxlIG1fdG90YWxSdW5uaW5nVGltZTsKLSAgICBk
b3VibGUgbV9sYXN0UmVmcmVzaGVkVGltZTsKLSAgICBBbmltYXRpb25TdGF0ZSBtX3N0YXRlOwot
fTsKLQotY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMgewotcHVibGljOgotICAgIEdyYXBo
aWNzTGF5ZXJBbmltYXRpb25zKCkgeyB9Ci0KLSAgICB2b2lkIGFkZChjb25zdCBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uJik7Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgU3RyaW5nJiBuYW1lKTsKLSAg
ICB2b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUsIEFuaW1hdGVkUHJvcGVydHlJRCk7Ci0g
ICAgdm9pZCBwYXVzZShjb25zdCBTdHJpbmcmLCBkb3VibGUpOwotICAgIHZvaWQgc3VzcGVuZChk
b3VibGUpOwotICAgIHZvaWQgcmVzdW1lKCk7Ci0gICAgdm9pZCBhcHBseShHcmFwaGljc0xheWVy
QW5pbWF0aW9uOjpDbGllbnQqKTsKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X2FuaW1hdGlvbnMuaXNFbXB0eSgpOyB9Ci0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2FuaW1hdGlvbnMuc2l6ZSgpOyB9Ci0gICAgY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXJB
bmltYXRpb24+JiBhbmltYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25zOyB9Ci0g
ICAgVmVjdG9yPEdyYXBoaWNzTGF5ZXJBbmltYXRpb24+JiBhbmltYXRpb25zKCkgeyByZXR1cm4g
bV9hbmltYXRpb25zOyB9Ci0KLSAgICBib29sIGhhc1J1bm5pbmdBbmltYXRpb25zKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNBY3RpdmVBbmltYXRpb25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlJRCB0
eXBlKSBjb25zdDsKLQotICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIGdldEFjdGl2ZUFuaW1h
dGlvbnMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8R3JhcGhpY3NMYXllckFuaW1h
dGlvbj4gbV9hbmltYXRpb25zOwotfTsKLQotfQotCi0jZW5kaWYgLy8gR3JhcGhpY3NMYXllckFu
aW1hdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRl
eCBiY2QyNjgzMWEyYWY2ZDVhNGE1OWU2MGNlYWRlNTFmZDMxODExZDc4Li4xZTAyZDFmNzVkMDg0
ZTFiYjZkZGY4ZDUzMmU2M2Y5MTM1MTlhM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKQEAgLTIxLDkgKzIxLDkgQEAKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJG
YWN0b3J5LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKICNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpCkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxp
c3QKICAgICAgICAgbGlzdHNNYXRjaCA9IHZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1
ZUxpc3QsIGhhc0JpZ1JvdGF0aW9uKSA+PSAwOwogCiAgICAgY29uc3QgZG91YmxlIGN1cnJlbnRU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgbV9hbmltYXRpb25zLmFk
ZChHcmFwaGljc0xheWVyQW5pbWF0aW9uKGtleWZyYW1lc05hbWUsIHZhbHVlTGlzdCwgYm94U2l6
ZSwgYW5pbSwgY3VycmVudFRpbWUgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNoKSk7CisgICAgbV9h
bmltYXRpb25zLmFkZChUZXh0dXJlTWFwcGVyQW5pbWF0aW9uKGtleWZyYW1lc05hbWUsIHZhbHVl
TGlzdCwgYm94U2l6ZSwgYW5pbSwgY3VycmVudFRpbWUgLSB0aW1lT2Zmc2V0LCBsaXN0c01hdGNo
KSk7CiAgICAgLy8gbV9hbmltYXRpb25TdGFydFRpbWUgaXMgdGhlIHRpbWUgb2YgdGhlIGZpcnN0
IHJlYWwgZnJhbWUgb2YgYW5pbWF0aW9uLCBub3cgb3IgZGVsYXllZCBieSBhIG5lZ2F0aXZlIG9m
ZnNldC4KICAgICBpZiAodGltZU9mZnNldCA+IDApCiAgICAgICAgIG1fYW5pbWF0aW9uU3RhcnRU
aW1lID0gY3VycmVudFRpbWU7CkBAIC01ODIsNyArNTgyLDcgQEAgYm9vbCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZUxpc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0QW5pbWF0aW9ucyhjb25zdCBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYgYW5pbWF0
aW9ucykKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldEFuaW1hdGlvbnMoY29u
c3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMmIGFuaW1hdGlvbnMpCiB7CiAgICAgbV9hbmltYXRp
b25zID0gYW5pbWF0aW9uczsKICAgICBub3RpZnlDaGFuZ2UoQW5pbWF0aW9uQ2hhbmdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggZjcwY2M5N2Y5NDc4ZDI4
NDhkMDEwNjFkNWYwNDQwMTc3M2ZlNWIzOS4uNzgzYzMyZjE4NWQwOTczNjIyNjVmYzA4ODQ1NTBl
ODBhOTk3NjNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJXaWR0aDsgfQogICAgIHZvaWQgc2V0UmVwYWludENv
dW50KGludCk7CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhpY3NMYXllckFu
aW1hdGlvbnMmKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFu
aW1hdGlvbnMmKTsKIAogcHJpdmF0ZToKICAgICAvLyBHcmFwaGljc0xheWVyCkBAIC0xNzcsNyAr
MTc3LDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKiBtX2Nv
bnRlbnRzTGF5ZXI7CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKLSAgICBHcmFw
aGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CisgICAgVGV4dHVyZU1hcHBlckFuaW1h
dGlvbnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2FuaW1hdGlvblN0YXJ0VGltZTsKIAog
ICAgIEludFNpemUgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckFuaW1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE0NGQwNTVlMGRmNzZlOTkzODk1ZjIzYTY2Y2Jk
MmFmZDczOGFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcApAQCAtMCwwICsxLDM5NyBA
QAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJM
YXlvdXRTaXplLmgiCisjaW5jbHVkZSAiVW5pdEJlemllci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kRnVuYyhGaWx0ZXJPcGVyYXRpb24qIGZyb21PcCwg
RmlsdGVyT3BlcmF0aW9uKiB0b09wLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkKK3sKKyAgICBBU1NFUlQodG9P
cCk7CisgICAgaWYgKHRvT3AtPmJsZW5kaW5nTmVlZHNSZW5kZXJlclNpemUoKSkKKyAgICAgICAg
cmV0dXJuIHRvT3AtPmJsZW5kKGZyb21PcCwgcHJvZ3Jlc3MsIExheW91dFNpemUoc2l6ZSksIGJs
ZW5kVG9QYXNzdGhyb3VnaCk7CisKKyAgICByZXR1cm4gdG9PcC0+YmxlbmQoZnJvbU9wLCBwcm9n
cmVzcywgYmxlbmRUb1Bhc3N0aHJvdWdoKTsKK30KKworCitzdGF0aWMgRmlsdGVyT3BlcmF0aW9u
cyBhcHBseUZpbHRlckFuaW1hdGlvbihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBjb25zdCBGbG9hdFNpemUm
IGJveFNpemUpCit7CisgICAgLy8gRmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgorICAgIGlm
ICghcHJvZ3Jlc3MpCisgICAgICAgIHJldHVybiBmcm9tOworCisgICAgLy8gTGFzdCBmcmFtZSBv
ZiBhbiBhbmltYXRpb24uCisgICAgaWYgKHByb2dyZXNzID09IDEpCisgICAgICAgIHJldHVybiB0
bzsKKworICAgIGlmICghZnJvbS5pc0VtcHR5KCkgJiYgIXRvLmlzRW1wdHkoKSAmJiAhZnJvbS5v
cGVyYXRpb25zTWF0Y2godG8pKQorICAgICAgICByZXR1cm4gdG87CisKKyAgICBGaWx0ZXJPcGVy
YXRpb25zIHJlc3VsdDsKKworICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZyb20ub3BlcmF0aW9ucygp
LnNpemUoKTsKKyAgICBzaXplX3QgdG9TaXplID0gdG8ub3BlcmF0aW9ucygpLnNpemUoKTsKKyAg
ICBzaXplX3Qgc2l6ZSA9IHN0ZDo6bWF4KGZyb21TaXplLCB0b1NpemUpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRp
b24+IGZyb21PcCA9IChpIDwgZnJvbVNpemUpID8gZnJvbS5vcGVyYXRpb25zKClbaV0uZ2V0KCkg
OiAwOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiB0b09wID0gKGkgPCB0b1NpemUp
ID8gdG8ub3BlcmF0aW9ucygpW2ldLmdldCgpIDogMDsKKyAgICAgICAgUmVmUHRyPEZpbHRlck9w
ZXJhdGlvbj4gYmxlbmRlZE9wID0gdG9PcCA/IGJsZW5kRnVuYyhmcm9tT3AuZ2V0KCksIHRvT3Au
Z2V0KCksIHByb2dyZXNzLCBib3hTaXplKSA6IChmcm9tT3AgPyBibGVuZEZ1bmMoMCwgZnJvbU9w
LmdldCgpLCBwcm9ncmVzcywgYm94U2l6ZSwgdHJ1ZSkgOiAwKTsKKyAgICAgICAgaWYgKGJsZW5k
ZWRPcCkKKyAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGJsZW5kZWRPcCk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gaWRl
bnRpdHlPcCA9IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoKTsKKyAgICAgICAg
ICAgIGlmIChwcm9ncmVzcyA+IDAuNSkKKyAgICAgICAgICAgICAgICByZXN1bHQub3BlcmF0aW9u
cygpLmFwcGVuZCh0b09wID8gdG9PcCA6IGlkZW50aXR5T3ApOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5vcGVyYXRpb25zKCkuYXBwZW5kKGZyb21PcCA/IGZyb21P
cCA6IGlkZW50aXR5T3ApOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIGJvb2wgc2hvdWxkUmV2ZXJzZUFuaW1hdGlvblZhbHVlKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgaW50IGxvb3BDb3VudCkKK3sKKyAgICBpZiAo
KChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpICYm
IChsb29wQ291bnQgJiAxKSkKKyAgICAgICAgfHwgKChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpB
bmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKSAmJiAhKGxvb3BDb3VudCAmIDEpKQor
ICAgICAgICB8fCBkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25SZXZl
cnNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp
YyBkb3VibGUgbm9ybWFsaXplZEFuaW1hdGlvblZhbHVlKGRvdWJsZSBydW5uaW5nVGltZSwgZG91
YmxlIGR1cmF0aW9uLCBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIGRv
dWJsZSBpdGVyYXRpb25Db3VudCkKK3sKKyAgICBpZiAoIWR1cmF0aW9uKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGNvbnN0IGludCBsb29wQ291bnQgPSBydW5uaW5nVGltZSAvIGR1cmF0aW9u
OworICAgIGNvbnN0IGRvdWJsZSBsYXN0RnVsbExvb3AgPSBkdXJhdGlvbiAqIGRvdWJsZShsb29w
Q291bnQpOworICAgIGNvbnN0IGRvdWJsZSByZW1haW5kZXIgPSBydW5uaW5nVGltZSAtIGxhc3RG
dWxsTG9vcDsKKyAgICAvLyBJZ25vcmUgcmVtYWluZGVyIHdoZW4gd2UndmUgcmVhY2hlZCB0aGUg
ZW5kIG9mIGFuaW1hdGlvbi4KKyAgICBjb25zdCBkb3VibGUgbm9ybWFsaXplZCA9IChsb29wQ291
bnQgPT0gaXRlcmF0aW9uQ291bnQpID8gMS4wIDogKHJlbWFpbmRlciAvIGR1cmF0aW9uKTsKKwor
ICAgIHJldHVybiBzaG91bGRSZXZlcnNlQW5pbWF0aW9uVmFsdWUoZGlyZWN0aW9uLCBsb29wQ291
bnQpID8gMSAtIG5vcm1hbGl6ZWQgOiBub3JtYWxpemVkOworfQorCitzdGF0aWMgZG91YmxlIG5v
cm1hbGl6ZWRBbmltYXRpb25WYWx1ZUZvckZpbGxzRm9yd2FyZHMoZG91YmxlIGl0ZXJhdGlvbkNv
dW50LCBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgaWYg
KGRpcmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCkKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRp
cmVjdGlvblJldmVyc2UpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzaG91bGRSZXZl
cnNlQW5pbWF0aW9uVmFsdWUoZGlyZWN0aW9uLCBpdGVyYXRpb25Db3VudCkgPyAxIDogMDsKK30K
Kworc3RhdGljIGZsb2F0IGFwcGx5T3BhY2l0eUFuaW1hdGlvbihmbG9hdCBmcm9tT3BhY2l0eSwg
ZmxvYXQgdG9PcGFjaXR5LCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgLy8gT3B0aW1pemF0aW9u
OiBzcGVjaWFsIGNhc2UgdGhlIGVkZ2UgdmFsdWVzICgwIGFuZCAxKS4KKyAgICBpZiAocHJvZ3Jl
c3MgPT0gMS4wKQorICAgICAgICByZXR1cm4gdG9PcGFjaXR5OworCisgICAgaWYgKCFwcm9ncmVz
cykKKyAgICAgICAgcmV0dXJuIGZyb21PcGFjaXR5OworCisgICAgcmV0dXJuIGZyb21PcGFjaXR5
ICsgcHJvZ3Jlc3MgKiAodG9PcGFjaXR5IC0gZnJvbU9wYWNpdHkpOworfQorCitzdGF0aWMgaW5s
aW5lIGRvdWJsZSBzb2x2ZUVwc2lsb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIHJldHVybiAx
LjAgLyAoMjAwLjAgKiBkdXJhdGlvbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZl
Q3ViaWNCZXppZXJGdW5jdGlvbihkb3VibGUgcDF4LCBkb3VibGUgcDF5LCBkb3VibGUgcDJ4LCBk
b3VibGUgcDJ5LCBkb3VibGUgdCwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIHJldHVybiBVbml0
QmV6aWVyKHAxeCwgcDF5LCBwMngsIHAyeSkuc29sdmUodCwgc29sdmVFcHNpbG9uKGR1cmF0aW9u
KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNGdW5jdGlvbihpbnQgbnVt
U3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0KQoreworICAgIGlmIChzdGVwQXRTdGFy
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKDEuMCwgKGZsb29yKG51bVN0ZXBzICogdCkgKyAx
KSAvIG51bVN0ZXBzKTsKKyAgICByZXR1cm4gZmxvb3IobnVtU3RlcHMgKiB0KSAvIG51bVN0ZXBz
OworfQorCitzdGF0aWMgaW5saW5lIGZsb2F0IGFwcGx5VGltaW5nRnVuY3Rpb24oY29uc3QgVGlt
aW5nRnVuY3Rpb24qIHRpbWluZ0Z1bmN0aW9uLCBmbG9hdCBwcm9ncmVzcywgZG91YmxlIGR1cmF0
aW9uKQoreworICAgIGlmICghdGltaW5nRnVuY3Rpb24pCisgICAgICAgIHJldHVybiBwcm9ncmVz
czsKKworICAgIGlmICh0aW1pbmdGdW5jdGlvbi0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
KCkpIHsKKyAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogY3RmID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9u
KTsKKyAgICAgICAgcmV0dXJuIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbihjdGYtPngxKCksIGN0
Zi0+eTEoKSwgY3RmLT54MigpLCBjdGYtPnkyKCksIHByb2dyZXNzLCBkdXJhdGlvbik7CisgICAg
fQorCisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewor
ICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uKiBzdGYgPSBzdGF0aWNfY2FzdDxjb25z
dCBTdGVwc1RpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOworICAgICAgICByZXR1cm4g
c29sdmVTdGVwc0Z1bmN0aW9uKHN0Zi0+bnVtYmVyT2ZTdGVwcygpLCBzdGYtPnN0ZXBBdFN0YXJ0
KCksIGRvdWJsZShwcm9ncmVzcykpOworICAgIH0KKworICAgIHJldHVybiBwcm9ncmVzczsKK30K
Kworc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IHRvLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSwgYm9vbCBsaXN0
c01hdGNoKQoreworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKworICAgIC8vIEZp
cnN0IGZyYW1lIG9mIGFuIGFuaW1hdGlvbi4KKyAgICBpZiAoIXByb2dyZXNzKSB7CisgICAgICAg
IGZyb20uYXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgcmV0dXJuIG1hdHJpeDsKKyAg
ICB9CisKKyAgICAvLyBMYXN0IGZyYW1lIG9mIGFuIGFuaW1hdGlvbi4KKyAgICBpZiAocHJvZ3Jl
c3MgPT0gMSkgeworICAgICAgICB0by5hcHBseShib3hTaXplLCBtYXRyaXgpOworICAgICAgICBy
ZXR1cm4gbWF0cml4OworICAgIH0KKworICAgIC8vIElmIHdlIGhhdmUgaW5jb21wYXRpYmxlIG9w
ZXJhdGlvbiBsaXN0cywgd2UgYmxlbmQgdGhlIHJlc3VsdGluZyBtYXRyaWNlcy4KKyAgICBpZiAo
IWxpc3RzTWF0Y2gpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbU1hdHJpeDsK
KyAgICAgICAgdG8uYXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKKyAgICAgICAgZnJvbS5hcHBseShi
b3hTaXplLCBmcm9tTWF0cml4KTsKKyAgICAgICAgbWF0cml4LmJsZW5kKGZyb21NYXRyaXgsIHBy
b2dyZXNzKTsKKyAgICAgICAgcmV0dXJuIG1hdHJpeDsKKyAgICB9CisKKyAgICAvLyBBbmltYXRp
b24gdG8gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KKyAgICBpZiAoIXRvLnNpemUoKSkgewor
ICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQoZnJvbSk7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYmxlbmRlZC5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoMCwgcHJvZ3Jlc3MsIHRydWUp
LT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAgICByZXR1cm4gbWF0cml4OworICAgIH0K
KworICAgIC8vIEFuaW1hdGlvbiBmcm9tICItd2Via2l0LXRyYW5zZm9ybTogbm9uZSIuCisgICAg
aWYgKCFmcm9tLnNpemUoKSkgeworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIGJsZW5kZWQo
dG8pOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsZW5kZWQub3BlcmF0aW9ucygp
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClbaV0tPmJsZW5k
KDAsIDEuIC0gcHJvZ3Jlc3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOworICAgICAg
ICByZXR1cm4gbWF0cml4OworICAgIH0KKworICAgIC8vIE5vcm1hbCBhbmltYXRpb24gd2l0aCBh
IG1hdGNoaW5nIG9wZXJhdGlvbiBsaXN0LgorICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxlbmRl
ZCh0byk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGVuZGVkLm9wZXJhdGlvbnMoKS5z
aXplKCk7ICsraSkKKyAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClbaV0tPmJsZW5kKGZyb20u
YXQoaSksIHByb2dyZXNzLCAhZnJvbS5hdChpKSktPmFwcGx5KG1hdHJpeCwgYm94U2l6ZSk7Cisg
ICAgcmV0dXJuIG1hdHJpeDsKK30KKworc3RhdGljIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1p
bmdGdW5jdGlvbkZvckFuaW1hdGlvblZhbHVlKGNvbnN0IEFuaW1hdGlvblZhbHVlJiBhbmltVmFs
dWUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSkKK3sKKyAgICBpZiAoYW5pbVZhbHVlLnRpbWluZ0Z1
bmN0aW9uKCkpCisgICAgICAgIHJldHVybiBhbmltVmFsdWUudGltaW5nRnVuY3Rpb24oKTsKKyAg
ICBpZiAoYW5pbS0+dGltaW5nRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIGFuaW0tPnRpbWlu
Z0Z1bmN0aW9uKCkuZ2V0KCk7CisKKyAgICByZXR1cm4gQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6ZGVmYXVsdFRpbWluZ0Z1bmN0aW9uKCk7Cit9CisKK1RleHR1cmVNYXBwZXJBbmltYXRpb246
OlRleHR1cmVNYXBwZXJBbmltYXRpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBLZXlmcmFt
ZVZhbHVlTGlzdCYga2V5ZnJhbWVzLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGNvbnN0IEFu
aW1hdGlvbiogYW5pbWF0aW9uLCBkb3VibGUgc3RhcnRUaW1lLCBib29sIGxpc3RzTWF0Y2gpCisg
ICAgOiBtX2tleWZyYW1lcyhrZXlmcmFtZXMpCisgICAgLCBtX2JveFNpemUoYm94U2l6ZSkKKyAg
ICAsIG1fYW5pbWF0aW9uKEFuaW1hdGlvbjo6Y3JlYXRlKCphbmltYXRpb24pKQorICAgICwgbV9u
YW1lKG5hbWUpCisgICAgLCBtX2xpc3RzTWF0Y2gobGlzdHNNYXRjaCkKKyAgICAsIG1fc3RhcnRU
aW1lKHN0YXJ0VGltZSkKKyAgICAsIG1fcGF1c2VUaW1lKDApCisgICAgLCBtX3RvdGFsUnVubmlu
Z1RpbWUoMCkKKyAgICAsIG1fbGFzdFJlZnJlc2hlZFRpbWUobV9zdGFydFRpbWUpCisgICAgLCBt
X3N0YXRlKFBsYXlpbmdTdGF0ZSkKK3sKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKENsaWVudCogY2xpZW50LCBjb25zdCBBbmltYXRpb25WYWx1ZSYgZnJv
bSwgY29uc3QgQW5pbWF0aW9uVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcykKK3sKKyAgICBzd2l0
Y2ggKG1fa2V5ZnJhbWVzLnByb3BlcnR5KCkpIHsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlP
cGFjaXR5OgorICAgICAgICBjbGllbnQtPnNldEFuaW1hdGVkT3BhY2l0eShhcHBseU9wYWNpdHlB
bmltYXRpb24oKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPihmcm9tKS52
YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUmPih0bykudmFs
dWUoKSksIHByb2dyZXNzKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFuaW1hdGVkUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm06CisgICAgICAgIGNsaWVudC0+c2V0QW5pbWF0ZWRUcmFuc2Zv
cm0oYXBwbHlUcmFuc2Zvcm1BbmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUmPihmcm9tKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZSY+KHRvKS52YWx1ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplLCBtX2xpc3Rz
TWF0Y2gpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVdlYmtp
dEZpbHRlcjoKKyAgICAgICAgY2xpZW50LT5zZXRBbmltYXRlZEZpbHRlcnMoYXBwbHlGaWx0ZXJB
bmltYXRpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRmlsdGVyQW5pbWF0aW9uVmFsdWUmPihmcm9tKS52
YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBGaWx0ZXJBbmltYXRpb25WYWx1ZSY+KHRvKS52YWx1
ZSgpLCBwcm9ncmVzcywgbV9ib3hTaXplKSk7CisgICAgICAgIHJldHVybjsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKK2Jvb2wgVGV4dHVy
ZU1hcHBlckFuaW1hdGlvbjo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIGlmIChzdGF0ZSgpICE9
IFN0b3BwZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gbV9hbmlt
YXRpb24tPmZpbGxzRm9yd2FyZHMoKTsKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
czo6aGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3BlcnR5SUQgdHlwZSkgY29u
c3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYW5pbWF0aW9ucy5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAobV9hbmltYXRpb25zW2ldLmlzQWN0aXZlKCkgJiYgbV9hbmltYXRp
b25zW2ldLnByb3BlcnR5KCkgPT0gdHlwZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6
Omhhc1J1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fYW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9hbmltYXRpb25z
W2ldLnN0YXRlKCkgPT0gVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6UGxheWluZ1N0YXRlKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb246OmFwcGx5KENsaWVudCogY2xpZW50KQoreworICAg
IGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG91YmxlIHRvdGFsUnVu
bmluZ1RpbWUgPSBjb21wdXRlVG90YWxSdW5uaW5nVGltZSgpOworICAgIGRvdWJsZSBub3JtYWxp
emVkVmFsdWUgPSBub3JtYWxpemVkQW5pbWF0aW9uVmFsdWUodG90YWxSdW5uaW5nVGltZSwgbV9h
bmltYXRpb24tPmR1cmF0aW9uKCksIG1fYW5pbWF0aW9uLT5kaXJlY3Rpb24oKSwgbV9hbmltYXRp
b24tPml0ZXJhdGlvbkNvdW50KCkpOworCisgICAgaWYgKG1fYW5pbWF0aW9uLT5pdGVyYXRpb25D
b3VudCgpICE9IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSAmJiB0b3RhbFJ1bm5p
bmdUaW1lID49IG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogbV9hbmltYXRpb24tPml0ZXJhdGlv
bkNvdW50KCkpIHsKKyAgICAgICAgc2V0U3RhdGUoU3RvcHBlZFN0YXRlKTsKKyAgICAgICAgaWYg
KG1fYW5pbWF0aW9uLT5maWxsc0ZvcndhcmRzKCkpCisgICAgICAgICAgICBub3JtYWxpemVkVmFs
dWUgPSBub3JtYWxpemVkQW5pbWF0aW9uVmFsdWVGb3JGaWxsc0ZvcndhcmRzKG1fYW5pbWF0aW9u
LT5pdGVyYXRpb25Db3VudCgpLCBtX2FuaW1hdGlvbi0+ZGlyZWN0aW9uKCkpOworICAgIH0KKwor
ICAgIGlmICghbm9ybWFsaXplZFZhbHVlKSB7CisgICAgICAgIGFwcGx5SW50ZXJuYWwoY2xpZW50
LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9rZXlmcmFtZXMuYXQoMSksIDApOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSA9PSAxLjApIHsKKyAgICAgICAg
YXBwbHlJbnRlcm5hbChjbGllbnQsIG1fa2V5ZnJhbWVzLmF0KG1fa2V5ZnJhbWVzLnNpemUoKSAt
IDIpLCBtX2tleWZyYW1lcy5hdChtX2tleWZyYW1lcy5zaXplKCkgLSAxKSwgMSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fa2V5ZnJhbWVzLnNpemUoKSA9PSAyKSB7CisgICAg
ICAgIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB0aW1pbmdGdW5jdGlvbiA9IHRpbWluZ0Z1bmN0aW9u
Rm9yQW5pbWF0aW9uVmFsdWUobV9rZXlmcmFtZXMuYXQoMCksIG1fYW5pbWF0aW9uLmdldCgpKTsK
KyAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5j
dGlvbiwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CisgICAgICAg
IGFwcGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9rZXlmcmFtZXMuYXQo
MSksIG5vcm1hbGl6ZWRWYWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAg
ICBjb25zdCBBbmltYXRpb25WYWx1ZSYgZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOworICAgICAg
ICBjb25zdCBBbmltYXRpb25WYWx1ZSYgdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7CisgICAg
ICAgIGlmIChmcm9tLmtleVRpbWUoKSA+IG5vcm1hbGl6ZWRWYWx1ZSB8fCB0by5rZXlUaW1lKCkg
PCBub3JtYWxpemVkVmFsdWUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBub3Jt
YWxpemVkVmFsdWUgPSAobm9ybWFsaXplZFZhbHVlIC0gZnJvbS5rZXlUaW1lKCkpIC8gKHRvLmtl
eVRpbWUoKSAtIGZyb20ua2V5VGltZSgpKTsKKyAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24q
IHRpbWluZ0Z1bmN0aW9uID0gdGltaW5nRnVuY3Rpb25Gb3JBbmltYXRpb25WYWx1ZShmcm9tLCBt
X2FuaW1hdGlvbi5nZXQoKSk7CisgICAgICAgIG5vcm1hbGl6ZWRWYWx1ZSA9IGFwcGx5VGltaW5n
RnVuY3Rpb24odGltaW5nRnVuY3Rpb24sIG5vcm1hbGl6ZWRWYWx1ZSwgbV9hbmltYXRpb24tPmR1
cmF0aW9uKCkpOworICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgZnJvbSwgdG8sIG5vcm1h
bGl6ZWRWYWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworZG91YmxlIFRleHR1cmVN
YXBwZXJBbmltYXRpb246OmNvbXB1dGVUb3RhbFJ1bm5pbmdUaW1lKCkKK3sKKyAgICBpZiAoc3Rh
dGUoKSA9PSBQYXVzZWRTdGF0ZSkKKyAgICAgICAgcmV0dXJuIG1fcGF1c2VUaW1lOworCisgICAg
ZG91YmxlIG9sZExhc3RSZWZyZXNoZWRUaW1lID0gbV9sYXN0UmVmcmVzaGVkVGltZTsKKyAgICBt
X2xhc3RSZWZyZXNoZWRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAg
bV90b3RhbFJ1bm5pbmdUaW1lICs9IG1fbGFzdFJlZnJlc2hlZFRpbWUgLSBvbGRMYXN0UmVmcmVz
aGVkVGltZTsKKyAgICByZXR1cm4gbV90b3RhbFJ1bm5pbmdUaW1lOworfQorCit2b2lkIFRleHR1
cmVNYXBwZXJBbmltYXRpb246OnBhdXNlKGRvdWJsZSB0aW1lKQoreworICAgIHNldFN0YXRlKFBh
dXNlZFN0YXRlKTsKKyAgICBtX3BhdXNlVGltZSA9IHRpbWU7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckFuaW1hdGlvbjo6cmVzdW1lKCkKK3sKKyAgICBzZXRTdGF0ZShQbGF5aW5nU3RhdGUpOwor
ICAgIG1fdG90YWxSdW5uaW5nVGltZSA9IG1fcGF1c2VUaW1lOworICAgIG1fbGFzdFJlZnJlc2hl
ZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uczo6YWRkKGNvbnN0IFRleHR1cmVNYXBwZXJBbmltYXRpb24mIGFuaW1h
dGlvbikKK3sKKyAgICAvLyBSZW1vdmUgdGhlIG9sZCBzdGF0ZSBpZiB3ZSBhcmUgcmVzdW1pbmcg
YSBwYXVzZWQgYW5pbWF0aW9uLgorICAgIHJlbW92ZShhbmltYXRpb24ubmFtZSgpLCBhbmltYXRp
b24ucHJvcGVydHkoKSk7CisKKyAgICBtX2FuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6OnBhdXNlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgZG91YmxlIG9mZnNldCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYW5pbWF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9hbmltYXRpb25zW2ldLm5hbWUoKSA9
PSBuYW1lKQorICAgICAgICAgICAgbV9hbmltYXRpb25zW2ldLnBhdXNlKG9mZnNldCk7CisgICAg
fQorfQorCit2b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb25zOjpzdXNwZW5kKGRvdWJsZSBvZmZz
ZXQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FuaW1hdGlvbnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fYW5pbWF0aW9uc1tpXS5wYXVzZShvZmZzZXQpOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJBbmltYXRpb25zOjpyZXN1bWUoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX2FuaW1hdGlvbnNbaV0u
cmVzdW1lKCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6OnJlbW92ZShjb25z
dCBTdHJpbmcmIG5hbWUpCit7CisgICAgZm9yIChpbnQgaSA9IG1fYW5pbWF0aW9ucy5zaXplKCkg
LSAxOyBpID49IDA7IC0taSkgeworICAgICAgICBpZiAobV9hbmltYXRpb25zW2ldLm5hbWUoKSA9
PSBuYW1lKQorICAgICAgICAgICAgbV9hbmltYXRpb25zLnJlbW92ZShpKTsKKyAgICB9Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6OnJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUs
IEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3sKKyAgICBmb3IgKGludCBpID0gbV9hbmlt
YXRpb25zLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChtX2FuaW1hdGlv
bnNbaV0ubmFtZSgpID09IG5hbWUgJiYgbV9hbmltYXRpb25zW2ldLnByb3BlcnR5KCkgPT0gcHJv
cGVydHkpCisgICAgICAgICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKGkpOworICAgIH0KK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uczo6YXBwbHkoVGV4dHVyZU1hcHBlckFuaW1hdGlv
bjo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FuaW1h
dGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fYW5pbWF0aW9uc1tpXS5hcHBseShjbGllbnQp
OworfQorCitUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uczo6
Z2V0QWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0Cit7CisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bnMgYWN0aXZlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUo
KTsgKytpKSB7CisgICAgICAgIGlmIChtX2FuaW1hdGlvbnNbaV0uaXNBY3RpdmUoKSkKKyAgICAg
ICAgICAgIGFjdGl2ZS5hZGQobV9hbmltYXRpb25zW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIGFj
dGl2ZTsKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYy
YmNkMjE2ZjlkZjViYTkwYWI3ZTU4Y2Y2ZDE5NzcxNWI2NzNhMzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFu
aW1hdGlvbi5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uX2gKKyNkZWZpbmUgVGV4
dHVyZU1hcHBlckFuaW1hdGlvbl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5j
bHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uIHsKK3B1YmxpYzoKKyAgICBlbnVtIEFuaW1h
dGlvblN0YXRlIHsgUGxheWluZ1N0YXRlLCBQYXVzZWRTdGF0ZSwgU3RvcHBlZFN0YXRlIH07Cisg
ICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRB
bmltYXRlZFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGVkT3BhY2l0eShmbG9hdCkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSA9
IDA7CisgICAgfTsKKworICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb24oKQorICAgICAgICA6IG1f
a2V5ZnJhbWVzKEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkKQorICAgIHsgfQorICAgIFRleHR1cmVN
YXBwZXJBbmltYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBBbmltYXRpb24qLCBkb3VibGUsIGJvb2wpOworICAgIHZv
aWQgYXBwbHkoQ2xpZW50Kik7CisgICAgdm9pZCBwYXVzZShkb3VibGUpOworICAgIHZvaWQgcmVz
dW1lKCk7CisgICAgZG91YmxlIGNvbXB1dGVUb3RhbFJ1bm5pbmdUaW1lKCk7CisgICAgQW5pbWF0
aW9uU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgdm9pZCBzZXRT
dGF0ZShBbmltYXRpb25TdGF0ZSBzLCBkb3VibGUgcGF1c2VUaW1lID0gMCkKKyAgICB7CisgICAg
ICAgIG1fc3RhdGUgPSBzOworICAgICAgICBtX3BhdXNlVGltZSA9IHBhdXNlVGltZTsKKyAgICB9
CisgICAgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9rZXlm
cmFtZXMucHJvcGVydHkoKTsgfQorICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdDsKKyAgICBTdHJp
bmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIEZsb2F0U2l6ZSBib3hTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9ib3hTaXplOyB9CisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9CisgICAgZG91YmxlIHBhdXNlVGltZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF1c2VUaW1lOyB9CisgICAgUGFzc1JlZlB0cjxBbmltYXRpb24+IGFuaW1h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9uLmdldCgpOyB9CisgICAgY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmIGtleWZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fa2V5ZnJhbWVzOyB9
CisgICAgYm9vbCBsaXN0c01hdGNoKCkgY29uc3QgeyByZXR1cm4gbV9saXN0c01hdGNoOyB9CisK
K3ByaXZhdGU6CisgICAgdm9pZCBhcHBseUludGVybmFsKENsaWVudCosIGNvbnN0IEFuaW1hdGlv
blZhbHVlJiBmcm9tLCBjb25zdCBBbmltYXRpb25WYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKTsK
KyAgICBLZXlmcmFtZVZhbHVlTGlzdCBtX2tleWZyYW1lczsKKyAgICBGbG9hdFNpemUgbV9ib3hT
aXplOworICAgIFJlZlB0cjxBbmltYXRpb24+IG1fYW5pbWF0aW9uOworICAgIFN0cmluZyBtX25h
bWU7CisgICAgYm9vbCBtX2xpc3RzTWF0Y2g7CisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAg
IGRvdWJsZSBtX3BhdXNlVGltZTsKKyAgICBkb3VibGUgbV90b3RhbFJ1bm5pbmdUaW1lOworICAg
IGRvdWJsZSBtX2xhc3RSZWZyZXNoZWRUaW1lOworICAgIEFuaW1hdGlvblN0YXRlIG1fc3RhdGU7
Cit9OworCitjbGFzcyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyB7CitwdWJsaWM6CisgICAgVGV4
dHVyZU1hcHBlckFuaW1hdGlvbnMoKSB7IH0KKworICAgIHZvaWQgYWRkKGNvbnN0IFRleHR1cmVN
YXBwZXJBbmltYXRpb24mKTsKKyAgICB2b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpOwor
ICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFN0cmluZyYgbmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eUlEKTsK
KyAgICB2b2lkIHBhdXNlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7CisgICAgdm9pZCBzdXNwZW5k
KGRvdWJsZSk7CisgICAgdm9pZCByZXN1bWUoKTsKKyAgICB2b2lkIGFwcGx5KFRleHR1cmVNYXBw
ZXJBbmltYXRpb246OkNsaWVudCopOworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5pbWF0aW9ucy5pc0VtcHR5KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYW5pbWF0aW9ucy5zaXplKCk7IH0KKyAgICBjb25zdCBWZWN0b3I8VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbj4mIGFuaW1hdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnM7IH0K
KyAgICBWZWN0b3I8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj4mIGFuaW1hdGlvbnMoKSB7IHJldHVy
biBtX2FuaW1hdGlvbnM7IH0KKworICAgIGJvb2wgaGFzUnVubmluZ0FuaW1hdGlvbnMoKSBjb25z
dDsKKyAgICBib29sIGhhc0FjdGl2ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eUlE
IHR5cGUpIGNvbnN0OworCisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMgZ2V0QWN0aXZlQW5p
bWF0aW9ucygpIGNvbnN0OworCitwcml2YXRlOgorICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyQW5p
bWF0aW9uPiBtX2FuaW1hdGlvbnM7Cit9OworCit9CisKKyNlbmRpZiAvLyBUZXh0dXJlTWFwcGVy
QW5pbWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMDE5ZThhNjUzOGU2
OTFjMjE2YzAxNWYxMWQ5ZjBkMzQ4OTQxNGRmNS4uZTM3NGZhMTYyNDIzNDgxMDFhOTM1NDJhNGYz
ZGM2MzQ5Zjg4NjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTYyMiw3ICs2
MjIsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29udGVudHNMYXllcihUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYQogICAgIG1fY29udGVudHNMYXllciA9IHBs
YXRmb3JtTGF5ZXI7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzZXRBbmltYXRpb25z
KGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRpb25zKQordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OnNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMm
IGFuaW1hdGlvbnMpCiB7CiAgICAgbV9hbmltYXRpb25zID0gYW5pbWF0aW9uczsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaAppbmRleCBjODdlMjUzNDBiM2E4YzBiOWZmYjQ4NmYzOTYzMTk0NDEy
NWE0ZGQ0Li41YmY3ODNkODQ3NWU2NzczNTIwMzgyMmEyMWM1ZGQzZGI1ZTI4N2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5oCkBAIC0yNCw5ICsyNCw5IEBACiAKICNpbmNsdWRlICJGaWx0ZXJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NM
YXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckFuaW1hdGlv
bi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBSZWdpb247CiBjbGFzcyBUZXh0dXJl
TWFwcGVyUGFpbnRPcHRpb25zOwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7CiAK
LWNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xheWVyQW5pbWF0aW9u
OjpDbGllbnQgeworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIFRleHR1cmVNYXBw
ZXJBbmltYXRpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1h
cHBlckxheWVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEx
NCw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyOyB9CiAgICAgdm9pZCBz
ZXRSZXBhaW50Q291bnQoaW50KTsKICAgICB2b2lkIHNldENvbnRlbnRzTGF5ZXIoVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIqKTsKLSAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMmKTsKKyAgICB2b2lkIHNldEFuaW1hdGlvbnMoY29uc3QgVGV4dHVy
ZU1hcHBlckFuaW1hdGlvbnMmKTsKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sKTsK
ICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRUb1ZpZXdw
b3J0OyB9CiAgICAgdm9pZCBzZXRCYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVy
QmFja2luZ1N0b3JlPik7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFw
cGx5TWFzayhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJik7CiAgICAgdm9pZCBjb21w
dXRlUGF0dGVyblRyYW5zZm9ybUlmTmVlZGVkKCk7CiAKLSAgICAvLyBHcmFwaGljc0xheWVyQW5p
bWF0aW9uOjpDbGllbnQKKyAgICAvLyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjpDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRPcGFjaXR5KGZs
b2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0ZWRGaWx0ZXJzKGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKQEAgLTI0OSw3ICsyNDksNyBAQCBwcml2YXRl
OgogCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBUZXh0dXJlTWFwcGVyKiBtX3RleHR1cmVNYXBw
ZXI7Ci0gICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOworICAgIFRleHR1
cmVNYXBwZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CiAgICAgdWludDMyX3Qg
bV9pZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKaW5kZXggMWQyMDJlYWFhOWY0ZmI2MDY2YmE1NTdlMTE5ZDY0YTc1MmRiZGEw
Yi4uZTZlMjEzZjliMTQ0NjdkOGE2ZGEwYWFhNmRmNzE1NWFlYTY0YzVkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAg
LTExOTAsNyArMTE5MCw3IEBAIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphZGRBbmlt
YXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwKICAgICAgICAgbGlzdHNN
YXRjaCA9IHZhbGlkYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyh2YWx1ZUxpc3QsIGlnbm9yZWRIYXNC
aWdSb3RhdGlvbikgPj0gMDsKIAogICAgIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSA9IG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gZGVsYXlBc05lZ2F0aXZlVGltZU9mZnNldDsKLSAg
ICBtX2FuaW1hdGlvbnMuYWRkKEdyYXBoaWNzTGF5ZXJBbmltYXRpb24oa2V5ZnJhbWVzTmFtZSwg
dmFsdWVMaXN0LCBib3hTaXplLCBhbmltLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUsIGxpc3Rz
TWF0Y2gpKTsKKyAgICBtX2FuaW1hdGlvbnMuYWRkKFRleHR1cmVNYXBwZXJBbmltYXRpb24oa2V5
ZnJhbWVzTmFtZSwgdmFsdWVMaXN0LCBib3hTaXplLCBhbmltLCBtX2xhc3RBbmltYXRpb25TdGFy
dFRpbWUsIGxpc3RzTWF0Y2gpKTsKICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiAgICAgZGlkQ2hhbmdlQW5pbWF0aW9ucygpOwogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
CmluZGV4IDY5YTkzN2RiMTQ4ZDdiMmY4Njg4OTMwYTdiZThmYTE5YTU1YjMzNDYuLmJmNzZhN2M2
OWZkYWQ0ODczYjg4MDBiZWJjZDhkMjQyNTk1MjY1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTI2LDEwICsyNiwxMCBA
QAogI2luY2x1ZGUgIkNvb3JkaW5hdGVkVGlsZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJHcmFwaGljc0xheWVyQW5p
bWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJB
bmltYXRpb24uaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXgu
aCIKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOwotY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM7CitjbGFz
cyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uczsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQgewpAQCAtMjQ0LDcgKzI0NCw3IEBAIHBy
aXZhdGU6CiAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbV9wbGF0Zm9ybUxheWVyVG9rZW47CiAj
ZW5kaWYKICAgICBUaW1lciBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKLSAgICBHcmFwaGljc0xh
eWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMg
bV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFydFRpbWU7CiAKICAg
ICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRleCAwYjVjYmI5MGUxNThj
MzM3YTFlNTEwMTJlN2U5MThhNDJkY2E4MzU2Li40NGZkNDg2Y2ZmYmZhMzEzODZjZDQ3YzU0Yzk0
YTM0MTE0ZTNmOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC0zMywxMCArMzMsMTAgQEAKICNpbmNsdWRlICJGaWx0ZXJP
cGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllckFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8u
aCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNm
b3JtYXRpb25NYXRyaXguaCIKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgQ29s
b3IgZGVidWdCb3JkZXJDb2xvcjsKICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoOwogICAgIEZp
bHRlck9wZXJhdGlvbnMgZmlsdGVyczsKLSAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBhbmlt
YXRpb25zOworICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb25zIGFuaW1hdGlvbnM7CiAgICAgVmVj
dG9yPHVpbnQzMl90PiBjaGlsZHJlbjsKICAgICBWZWN0b3I8VGlsZUNyZWF0aW9uSW5mbz4gdGls
ZXNUb0NyZWF0ZTsKICAgICBWZWN0b3I8dWludDMyX3Q+IHRpbGVzVG9SZW1vdmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDUwMGE5YmQ3MDQ3ZmI5OTMy
OWIyMTc5ZjM3MWE1MDgzODkzMWQ2M2EuLjU3Yjk4MDIyZTI5MDc5NDY5ZTVhNzg3NWI4MDNhMmY0
ZWZlOWZmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0zNTIsNyArMzUyLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdT
dHJpbmcnOiBbJzx3dGYvdGV4dC9XVEZTdHJpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkNv
bXBvc2l0aW9uVW5kZXJsaW5lJzogWyc8V2ViQ29yZS9FZGl0b3IuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OkdyYW1tYXJEZXRhaWwnOiBbJzxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+J10s
Ci0gICAgICAgICdXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyc6IFsnPFdlYkNvcmUv
R3JhcGhpY3NMYXllckFuaW1hdGlvbi5oPiddLAorICAgICAgICAnV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckFuaW1hdGlvbnMnOiBbJzxXZWJDb3JlL1RleHR1cmVNYXBwZXJBbmltYXRpb24uaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0JzogWyc8V2ViQ29yZS9HcmFwaGlj
c0xheWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnOiBbJzxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA0MDVkMzE1NTQw
ZDBiZGRjYjI3OGY5MTRlM2EwYjk0ZGRlZWMyZTExLi4yZDI5NGYzOGMwMTU3MjdkMGM0NTk1ZGVm
OTJkNTQ4OTI4NjA0YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVy
T3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludDNELmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQW5pbWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
ZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgpAQCAtNDcsNiArNDYsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1cmZhY2VVcGRh
dGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJh
bnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oPgpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgZGVjb2RlVGltaW5nRnVuY3Rp
b24oQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8VGltaW5nRnVuY3Rpb24+JiB0aW1p
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXll
ckFuaW1hdGlvbj46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEdyYXBo
aWNzTGF5ZXJBbmltYXRpb24mIGFuaW1hdGlvbikKK3ZvaWQgQXJndW1lbnRDb2RlcjxUZXh0dXJl
TWFwcGVyQW5pbWF0aW9uPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
VGV4dHVyZU1hcHBlckFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGVuY29kZXIgPDwgYW5p
bWF0aW9uLm5hbWUoKTsKICAgICBlbmNvZGVyIDw8IGFuaW1hdGlvbi5ib3hTaXplKCk7CkBAIC00
NTcsMTEgKzQ1NywxMSBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NMYXllckFuaW1hdGlv
bj46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbgogICAgIH0KIH0KIAotYm9v
bCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb24+OjpkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBHcmFwaGljc0xheWVyQW5pbWF0aW9uJiBhbmltYXRpb24pCitib29s
IEFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj46OmRlY29kZShBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFRleHR1cmVNYXBwZXJBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKICAg
ICBTdHJpbmcgbmFtZTsKICAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgR3JhcGhpY3NMYXllckFu
aW1hdGlvbjo6QW5pbWF0aW9uU3RhdGUgc3RhdGU7CisgICAgVGV4dHVyZU1hcHBlckFuaW1hdGlv
bjo6QW5pbWF0aW9uU3RhdGUgc3RhdGU7CiAgICAgZG91YmxlIHN0YXJ0VGltZTsKICAgICBkb3Vi
bGUgcGF1c2VUaW1lOwogICAgIGJvb2wgbGlzdHNNYXRjaDsKQEAgLTU0NiwxOCArNTQ2LDE4IEBA
IGJvb2wgQXJndW1lbnRDb2RlcjxHcmFwaGljc0xheWVyQW5pbWF0aW9uPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgR3JhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBhbmltYXRp
b24gPSBHcmFwaGljc0xheWVyQW5pbWF0aW9uKG5hbWUsIGtleWZyYW1lcywgYm94U2l6ZSwgYW5p
bWF0aW9uT2JqZWN0LmdldCgpLCBzdGFydFRpbWUsIGxpc3RzTWF0Y2gpOworICAgIGFuaW1hdGlv
biA9IFRleHR1cmVNYXBwZXJBbmltYXRpb24obmFtZSwga2V5ZnJhbWVzLCBib3hTaXplLCBhbmlt
YXRpb25PYmplY3QuZ2V0KCksIHN0YXJ0VGltZSwgbGlzdHNNYXRjaCk7CiAgICAgYW5pbWF0aW9u
LnNldFN0YXRlKHN0YXRlLCBwYXVzZVRpbWUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgQXJndW1lbnRDb2RlcjxHcmFwaGljc0xheWVyQW5pbWF0aW9ucz46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJiBhbmltYXRp
b25zKQordm9pZCBBcmd1bWVudENvZGVyPFRleHR1cmVNYXBwZXJBbmltYXRpb25zPjo6ZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMm
IGFuaW1hdGlvbnMpCiB7CiAgICAgZW5jb2RlciA8PCBhbmltYXRpb25zLmFuaW1hdGlvbnMoKTsK
IH0KIAotYm9vbCBBcmd1bWVudENvZGVyPEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMmIGFuaW1h
dGlvbnMpCitib29sIEFyZ3VtZW50Q29kZXI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbnM+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyYgYW5p
bWF0aW9ucykKIHsKICAgICByZXR1cm4gZGVjb2Rlci5kZWNvZGUoYW5pbWF0aW9ucy5hbmltYXRp
b25zKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuaAppbmRleCBhZjNhYmVmZDMwNTMwNWNjZjhlN2JhMTEyY2U4Y2I0YThjZmRlNjRm
Li5lY2RkMDE0YzViMTY0NTFhMTUzYjVhMjZmNGU0YWZkMGMxZDlmNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaApAQCAtMzUsOCAr
MzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyU3RhdGU7CiBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlOwogY2xhc3MgRmxvYXRQ
b2ludDNEOwotY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbjsKLWNsYXNzIEdyYXBoaWNzTGF5
ZXJBbmltYXRpb25zOworY2xhc3MgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjsKK2NsYXNzIFRleHR1
cmVNYXBwZXJBbmltYXRpb25zOwogY2xhc3MgU3VyZmFjZVVwZGF0ZUluZm87CiBzdHJ1Y3QgVGls
ZUNyZWF0aW9uSW5mbzsKIHN0cnVjdCBUaWxlVXBkYXRlSW5mbzsKQEAgLTYzLDE0ICs2MywxNCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJh
dGlvbnM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29y
ZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucz4gewotICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
QW5pbWF0aW9ucyYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucz4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyQW5pbWF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIm
LCBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyYpOwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9uPiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJBbmltYXRpb24mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbiYpOwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJBbmltYXRpb24mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnRE
ZWNvZGVyJiwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckFuaW1hdGlvbiYpOwogfTsKIAogI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aAppbmRleCBjYjNjYTFkODAzMjRlMTJiYmUxZmQxMThjZDMyNjcyZWNiNzg0M2NjLi5mNzE3MTlj
ZDQ5NDFiMmI4OTVmNzkyYzcwOGM0YmMwMjY2Njg1MGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q29vcmRpbmF0ZWRTdXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXJBbmltYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVN
YXBwZXIuaD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>