<?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>192592</bug_id>
          
          <creation_ts>2018-12-11 09:12:22 -0800</creation_ts>
          <short_desc>Resource Load Statistics: Use common implementation within NetworkStorageSession</short_desc>
          <delta_ts>2018-12-11 12:26:36 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pgriffis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486939</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-12-11 09:12:22 -0800</bug_when>
    <thetext>Currently there is a common implementation of ENABLE(RESOURCE_LOAD_STATISTICS) within NetworkStorageSessionCFNet.cpp that should go into NetworkStorageSession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486942</commentid>
    <comment_count>1</comment_count>
      <attachid>357054</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-12-11 09:20:04 -0800</bug_when>
    <thetext>Created attachment 357054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486956</commentid>
    <comment_count>2</comment_count>
      <attachid>357060</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-12-11 09:41:18 -0800</bug_when>
    <thetext>Created attachment 357060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486959</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-11 09:47:49 -0800</bug_when>
    <thetext>Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486996</commentid>
    <comment_count>4</comment_count>
      <attachid>357060</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-11 11:47:34 -0800</bug_when>
    <thetext>Comment on attachment 357060
Patch

r=me
You should be aware that the high-level organization of resource load statistics is not where we want it to be.  I think right now it uses some strange combination of process pool and globals, and it needs some love and polish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487006</commentid>
    <comment_count>5</comment_count>
      <attachid>357060</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-11 12:15:04 -0800</bug_when>
    <thetext>Comment on attachment 357060
Patch

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:106
&gt; +bool NetworkStorageSession::shouldBlockCookies(const ResourceRequest&amp; request, std::optional&lt;uint64_t&gt; frameID, std::optional&lt;uint64_t&gt; pageID) const

Preexisting problem, but I presume passing std::optional by value is not best-practice? Should be const ref?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487007</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-11 12:17:44 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #5)
&gt; Comment on attachment 357060 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357060&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:106
&gt; &gt; +bool NetworkStorageSession::shouldBlockCookies(const ResourceRequest&amp; request, std::optional&lt;uint64_t&gt; frameID, std::optional&lt;uint64_t&gt; pageID) const
&gt; 
&gt; Preexisting problem, but I presume passing std::optional by value is not
&gt; best-practice? Should be const ref?

I think we&apos;re OK with it for small types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487012</commentid>
    <comment_count>7</comment_count>
      <attachid>357060</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 12:25:30 -0800</bug_when>
    <thetext>Comment on attachment 357060
Patch

Clearing flags on attachment: 357060

Committed r239081: &lt;https://trac.webkit.org/changeset/239081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487013</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-11 12:25:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487014</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-11 12:26:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/46637456&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357054</attachid>
            <date>2018-12-11 09:20:04 -0800</date>
            <delta_ts>2018-12-11 09:41:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192592.diff</filename>
            <type>text/plain</type>
            <size>21426</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YmMzMzM4NGUwNS4uMjBiYTA1NDk3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxOC0xMi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogVXNlIGNvbW1vbiBpbXBs
ZW1lbnRhdGlvbiB3aXRoaW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI1OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSdzIG5vdGhpbmcgd2l0aGluIHRo
ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgaW1wbGVtZW50YXRpb24gY29udGFpbmVkCisgICAg
ICAgIGluIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0IHRoYXQgd2FzIENGIHNwZWNpZmljLiBB
bGwgb2YgdGhlIHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGljcyBtZXRob2RzIGFyZSBt
b3ZlZCBmcm9tIHRoYXQgZmlsZSB0byB0aGUgcm9vdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24KKyAg
ICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQYXJ0aXRpb25pbmdE
b21haW4pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXApOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnJlbW92ZVByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFu
dFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFn
ZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBhcnRpdGlvbmluZ0RvbWFpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVt
b3ZlUHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKwogMjAxOC0xMi0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBTVkdWaWV3U3BlYyBvYmplY3RzIHNob3VsZCBtYXJrIHJlbGV2
YW50IFNWRyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDAzMzA3YTYwNTQxLi5iOTk5
ZTdlM2I1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMjYsMTAgKzI2LDE1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAKKyNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxl
Z2UuaD4KIAorI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCisjaW5jbHVkZSAiUHVibGlj
U3VmZml4LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bV9wcm9jZXNzTWF5VXNlQ29va2llQVBJID0gZmFsc2U7CkBAIC03NCw0
ICs3OSwxNzMgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnBlcm1pdFByb2Nlc3NUb1Vz
ZUNvb2tpZUFQSShib29sIHZhbHVlKQogICAgICAgICByZW1vdmVQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpOwogfQogCisjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKKworc3RhdGljIGlubGluZSBTdHJpbmcgZ2V0UGFydGl0
aW9uaW5nRG9tYWluKGNvbnN0IFVSTCYgdXJsKQoreworI2lmIEVOQUJMRShQVUJMSUNfU1VGRklY
X0xJU1QpCisgICAgYXV0byBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVy
bC5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCisgICAgICAg
IGRvbWFpbiA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyNlbHNlCisgICAgYXV0byBkb21haW4g
PSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CisjZW5kaWYKKyAgICByZXR1cm4gZG9tYWluOworfQor
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cyhjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pIGNvbnN0Cit7Cisg
ICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1RvQmxvY2suY29udGFpbnModG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbik7Cit9CisKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNob3VsZEJs
b2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHJlcXVlc3QudXJsKCks
IGZyYW1lSUQsIHBhZ2VJRCk7Cit9CisgICAgCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0
IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK3sKKyAgICBhdXRvIGZpcnN0UGFydHlEb21h
aW4gPSBnZXRQYXJ0aXRpb25pbmdEb21haW4oZmlyc3RQYXJ0eUZvckNvb2tpZXMpOworICAgIGlm
IChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byByZXNvdXJjZURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFpbihyZXNvdXJjZSk7
CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKGZpcnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VEb21haW4pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChwYWdlSUQgJiYgaGFzU3RvcmFnZUFjY2VzcyhyZXNv
dXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELnZhbHVlKCkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llcyhyZXNvdXJjZURvbWFpbik7Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCit7CisgICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0KSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXM7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcykKK3sKKyAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzID0gc2Vjb25k
czsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3sKKyAgICBt
X3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5jbGVhcigpOworICAgIG1fdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLmFkZChkb21haW5zLmJlZ2luKCksIGRv
bWFpbnMuZW5kKCkpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJl
dmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucykKK3sKKyAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbnNUb0Jsb2NrLnJlbW92ZShkb21haW4pOworfQorCitib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK3sKKyAgICBpZiAoZnJhbWVJRCkgeworICAg
ICAgICBhdXRvIGZyYW1lc0dyYW50ZWRJdGVyYXRvciA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VB
Y2Nlc3MuZmluZChwYWdlSUQpOworICAgICAgICBpZiAoZnJhbWVzR3JhbnRlZEl0ZXJhdG9yICE9
IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
aXQgPSBmcmFtZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmZpbmQoZnJhbWVJRC52YWx1ZSgpKTsK
KyAgICAgICAgICAgIGlmIChpdCAhPSBmcmFtZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgp
ICYmIGl0LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlyc3RQYXJ0eURvbWFpbi5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRvciA9IG1fcGFnZXNHcmFu
dGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CisgICAgICAgIGlmIChwYWdlc0dyYW50ZWRJ
dGVyYXRvciAhPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gaXQgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmaXJzdFBhcnR5
RG9tYWluKTsKKyAgICAgICAgICAgIGlmIChpdCAhPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFs
dWUuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
CitWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBlbnRyaWVzOworICAgIGZv
ciAoYXV0byYgaW5uZXJNYXAgOiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnZhbHVlcygp
KSB7CisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBpbm5lck1hcC52YWx1ZXMoKSkKKyAgICAg
ICAgICAgIGVudHJpZXMuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGVudHJpZXM7
Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQor
eworICAgIGlmICghZnJhbWVJRCkgeworICAgICAgICBpZiAoZmlyc3RQYXJ0eURvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gcGFnZXNHcmFudGVkSXRl
cmF0b3IgPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgICAg
ICBpZiAocGFnZXNHcmFudGVkSXRlcmF0b3IgPT0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNz
LmVuZCgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBlbnRyeTsKKyAg
ICAgICAgICAgIGVudHJ5LmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7Cisg
ICAgICAgICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuYWRkKHBhZ2VJRCwgZW50cnkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9tYWluSXRl
cmF0b3IgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmaXJzdFBhcnR5RG9tYWlu
KTsKKyAgICAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluSXRlcmF0b3IgPT0gcGFnZXNHcmFu
dGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAgICAgICAgICAgICAgIHBhZ2VzR3JhbnRlZEl0
ZXJhdG9yLT52YWx1ZS5hZGQoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3VyY2VEb21haW4pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0UGFydHlEb21haW5JdGVyYXRvci0+
dmFsdWUgPSByZXNvdXJjZURvbWFpbjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRvciA9IG1fZnJhbWVzR3JhbnRlZFN0b3Jh
Z2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgIGlmIChwYWdlc0dyYW50ZWRJdGVyYXRvciA9PSBt
X2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKSB7CisgICAgICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gZW50cnk7CisgICAgICAgIGVudHJ5LmFk
ZChmcmFtZUlELnZhbHVlKCksIHJlc291cmNlRG9tYWluKTsKKyAgICAgICAgbV9mcmFtZXNHcmFu
dGVkU3RvcmFnZUFjY2Vzcy5hZGQocGFnZUlELCBlbnRyeSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFs
dWUuZmluZChmcmFtZUlELnZhbHVlKCkpOworICAgICAgICBpZiAoZnJhbWVzR3JhbnRlZEl0ZXJh
dG9yID09IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgICAgIHBh
Z2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5hZGQoZnJhbWVJRC52YWx1ZSgpLCByZXNvdXJjZURv
bWFpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyYW1lc0dyYW50ZWRJdGVyYXRvci0+
dmFsdWUgPSByZXNvdXJjZURvbWFpbjsKKyAgICB9Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKQoreworICAgIGF1dG8gaXRlcmF0aW9uID0gbV9mcmFtZXNHcmFudGVkU3Rv
cmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CisgICAgaWYgKGl0ZXJhdGlvbiA9PSBtX2ZyYW1lc0dy
YW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdGVyYXRp
b24tPnZhbHVlLnJlbW92ZShmcmFtZUlEKTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UodWludDY0X3QgcGFnZUlE
KQoreworICAgIG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKKyAg
ICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpCit7CisgICAg
bV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CisgICAgbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5jbGVhcigpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyBzZWNvbmRzKQor
eworICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBzZWNvbmRzOwor
fQorICAgIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoKQoreworICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBzdGQ6Om51bGxvcHQ7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggM2UyNzdlZWEwZjcuLjJm
YjM5MGY0ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCwyMiArMTAwLDYgQEAgcHVibGljOgog
ICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzaW9uKCkgeyByZXR1cm4gbV9w
bGF0Zm9ybVNlc3Npb24uZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGJvb2wpOwotI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhzdGQ6Om9wdGlvbmFsPFNlY29uZHM+KTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGRvbWFpbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZ2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UodWludDY0X3Qg
cGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nlc3Mo
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
Ci0jZW5kaWYKICNlbGlmIFVTRShTT1VQKQogICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6
OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vzc2lvbj4mJik7CiAgICAg
fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwpAQCAtMTY0LDYgKzE0OCwyMiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0Owog
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6Om9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9j
a0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZSh1aW50
NjRfdCBwYWdlSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIGdsb2JhbFNlc3Np
b25NYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggODFhYmVkMjE0
NTAuLjFjY2FiNDNjN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAt
MjU0LDE3NSArMjU0LDYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFN0b3JhZ2VB
Y2Nlc3NBUElFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBzdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZCA9IGVuYWJsZWQ7CiB9CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
Ci1zdGF0aWMgaW5saW5lIFN0cmluZyBnZXRQYXJ0aXRpb25pbmdEb21haW4oY29uc3QgVVJMJiB1
cmwpCi17Ci0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLSAgICBhdXRvIGRvbWFpbiA9
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKS50b1N0cmluZygpKTsKLSAg
ICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgZG9tYWluID0gdXJsLmhvc3QoKS50b1N0
cmluZygpOwotI2Vsc2UKLSAgICBhdXRvIGRvbWFpbiA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsK
LSNlbmRpZgotICAgIHJldHVybiBkb21haW47Ci19Ci0KLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFN0cmluZyYgdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbikgY29uc3QKLXsKLSAgICBpZiAodG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVy
biBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5jb250YWlucyh0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLX0KLQotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6
b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKLX0KLSAg
ICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBj
b25zdAotewotICAgIGF1dG8gZmlyc3RQYXJ0eURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0RvbWFp
bihmaXJzdFBhcnR5Rm9yQ29va2llcyk7Ci0gICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHJlc291cmNlRG9tYWluID0g
Z2V0UGFydGl0aW9uaW5nRG9tYWluKHJlc291cmNlKTsKLSAgICBpZiAocmVzb3VyY2VEb21haW4u
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZmlyc3RQYXJ0eURv
bWFpbiA9PSByZXNvdXJjZURvbWFpbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KHBhZ2VJRCAmJiBoYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9t
YWluLCBmcmFtZUlELCBwYWdlSUQudmFsdWUoKSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHJlc291cmNlRG9tYWluKTsK
LX0KLQotc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Om1heEFn
ZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAobV9j
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMo
cmVxdWVzdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpKQotICAgICAgICByZXR1cm4gbV9j
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlczsKLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0QWdlQ2FwRm9yQ2xpZW50
U2lkZUNvb2tpZXMoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKQotewotICAgIG1fYWdl
Q2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgPSBzZWNvbmRzOwotfQotCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zKQotewotICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbnNUb0Jsb2NrLmNsZWFyKCk7Ci0gICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1RvQmxvY2suYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSk7Ci19Ci0KLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zKQotewotICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykK
LSAgICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvQmxvY2sucmVtb3ZlKGRv
bWFpbik7Ci19Ci0KLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURv
bWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSBj
b25zdAotewotICAgIGlmIChmcmFtZUlEKSB7Ci0gICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0
ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7Ci0gICAg
ICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3IgIT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFj
Y2Vzcy5lbmQoKSkgewotICAgICAgICAgICAgYXV0byBpdCA9IGZyYW1lc0dyYW50ZWRJdGVyYXRv
ci0+dmFsdWUuZmluZChmcmFtZUlELnZhbHVlKCkpOwotICAgICAgICAgICAgaWYgKGl0ICE9IGZy
YW1lc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNl
RG9tYWluKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgaWYgKCFmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHBh
Z2VzR3JhbnRlZEl0ZXJhdG9yID0gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFn
ZUlEKTsKLSAgICAgICAgaWYgKHBhZ2VzR3JhbnRlZEl0ZXJhdG9yICE9IG1fcGFnZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5lbmQoKSkgewotICAgICAgICAgICAgYXV0byBpdCA9IHBhZ2VzR3JhbnRl
ZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZpcnN0UGFydHlEb21haW4pOwotICAgICAgICAgICAgaWYg
KGl0ICE9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSAmJiBpdC0+dmFsdWUgPT0g
cmVzb3VyY2VEb21haW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBjb25zdAotewotICAg
IFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgZm9yIChhdXRvJiBpbm5lck1hcCA6IG1fZnJh
bWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MudmFsdWVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiB2
YWx1ZSA6IGlubmVyTWFwLnZhbHVlcygpKQotICAgICAgICAgICAgZW50cmllcy5hcHBlbmQodmFs
dWUpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLSAgICAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3RyaW5nJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCi17Ci0gICAgaWYgKCFmcmFtZUlEKSB7Ci0g
ICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRvciA9IG1fcGFnZXNHcmFudGVkU3Rv
cmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7Ci0gICAgICAgIGlmIChwYWdlc0dyYW50ZWRJdGVyYXRv
ciA9PSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKLSAgICAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IGVudHJ5OwotICAgICAgICAgICAgZW50cnkuYWRkKGZpcnN0
UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKLSAgICAgICAgICAgIG1fcGFnZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5hZGQocGFnZUlELCBlbnRyeSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBhdXRvIGZpcnN0UGFydHlEb21haW5JdGVyYXRvciA9IHBhZ2VzR3JhbnRlZEl0ZXJh
dG9yLT52YWx1ZS5maW5kKGZpcnN0UGFydHlEb21haW4pOwotICAgICAgICAgICAgaWYgKGZpcnN0
UGFydHlEb21haW5JdGVyYXRvciA9PSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkp
Ci0gICAgICAgICAgICAgICAgcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmFkZChmaXJzdFBh
cnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZmlyc3RQYXJ0eURvbWFpbkl0ZXJhdG9yLT52YWx1ZSA9IHJlc291cmNlRG9tYWluOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIHBhZ2VzR3JhbnRl
ZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7Ci0g
ICAgaWYgKHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID09IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MuZW5kKCkpIHsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+PiBlbnRyeTsKLSAgICAgICAgZW50cnkuYWRkKGZyYW1lSUQudmFsdWUoKSwgcmVzb3Vy
Y2VEb21haW4pOwotICAgICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmFkZChwYWdl
SUQsIGVudHJ5KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGZyYW1lc0dyYW50ZWRJdGVy
YXRvciA9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZyYW1lSUQudmFsdWUoKSk7
Ci0gICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3IgPT0gcGFnZXNHcmFudGVkSXRlcmF0
b3ItPnZhbHVlLmVuZCgpKQotICAgICAgICAgICAgcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVl
LmFkZChmcmFtZUlELnZhbHVlKCksIHJlc291cmNlRG9tYWluKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZnJhbWVzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZSA9IHJlc291cmNlRG9tYWluOwot
ICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCi17Ci0gICAgYXV0
byBpdGVyYXRpb24gPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsK
LSAgICBpZiAoaXRlcmF0aW9uID09IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQp
OwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckFsbEZyYW1lc09uUGFnZSh1aW50NjRfdCBwYWdlSUQpCi17Ci0gICAgbV9wYWdlc0dyYW50ZWRT
dG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwotICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VB
Y2Nlc3MucmVtb3ZlKHBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpy
ZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkKLXsKLSAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MuY2xlYXIoKTsKLSAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7Ci19
Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9jYWNoZU1heEFnZUNhcEZv
clByZXZhbGVudFJlc291cmNlcyA9IHNlY29uZHM7Ci19Ci0gICAgCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCi17
Ci0gICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHN0ZDo6bnVsbG9w
dDsKLX0KLSNlbmRpZiAvLyAgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLQogI2lm
ICFQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVz
KGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJikKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357060</attachid>
            <date>2018-12-11 09:41:18 -0800</date>
            <delta_ts>2018-12-11 12:25:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192592.diff</filename>
            <type>text/plain</type>
            <size>21384</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YmMzMzM4NGUwNS4uMjBiYTA1NDk3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxOC0xMi0xMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogVXNlIGNvbW1vbiBpbXBs
ZW1lbnRhdGlvbiB3aXRoaW4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI1OTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSdzIG5vdGhpbmcgd2l0aGluIHRo
ZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MgaW1wbGVtZW50YXRpb24gY29udGFpbmVkCisgICAg
ICAgIGluIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0IHRoYXQgd2FzIENGIHNwZWNpZmljLiBB
bGwgb2YgdGhlIHJlc291cmNlIGxvYWQKKyAgICAgICAgc3RhdGlzdGljcyBtZXRob2RzIGFyZSBt
b3ZlZCBmcm9tIHRoYXQgZmlsZSB0byB0aGUgcm9vdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24KKyAg
ICAgICAgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRQYXJ0aXRpb25pbmdE
b21haW4pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWF4QWdlQ2FjaGVDYXApOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnJlbW92ZVByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFu
dFN0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yQWxsRnJhbWVzT25QYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFn
ZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFBhcnRpdGlvbmluZ0RvbWFpbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFn
ZUNhcEZvckNsaWVudFNpZGVDb29raWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVt
b3ZlUHJldmFsZW50RG9tYWlucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmdyYW50U3RvcmFnZUFjY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKTogRGVsZXRlZC4KKwogMjAxOC0xMi0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBTVkdWaWV3U3BlYyBvYmplY3RzIHNob3VsZCBtYXJrIHJlbGV2
YW50IFNWRyBlbGVtZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDAzMzA3YTYwNTQxLi4xYTlj
OGRhZWM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtMzAsNiArMzAsMTMgQEAKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5o
PgogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyNpbmNsdWRlICJSZXNv
dXJjZVJlcXVlc3QuaCIKKyNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQorI2luY2x1ZGUg
IlB1YmxpY1N1ZmZpeC5oIgorI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bV9wcm9jZXNzTWF5VXNlQ29va2llQVBJID0g
ZmFsc2U7CkBAIC03NCw0ICs4MSwxNzMgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnBl
cm1pdFByb2Nlc3NUb1VzZUNvb2tpZUFQSShib29sIHZhbHVlKQogICAgICAgICByZW1vdmVQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpOwogfQog
CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKworc3RhdGljIGlubGluZSBT
dHJpbmcgZ2V0UGFydGl0aW9uaW5nRG9tYWluKGNvbnN0IFVSTCYgdXJsKQoreworI2lmIEVOQUJM
RShQVUJMSUNfU1VGRklYX0xJU1QpCisgICAgYXV0byBkb21haW4gPSB0b3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluKHVybC5ob3N0KCkudG9TdHJpbmcoKSk7CisgICAgaWYgKGRvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgIGRvbWFpbiA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyNlbHNlCisg
ICAgYXV0byBkb21haW4gPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CisjZW5kaWYKKyAgICByZXR1
cm4gZG9tYWluOworfQorCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcyhjb25zdCBTdHJpbmcmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4pIGNvbnN0Cit7CisgICAgaWYgKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbV90b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1RvQmxvY2suY29udGFpbnModG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbik7Cit9CisKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tp
ZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHNob3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHJlcXVlc3QudXJsKCksIGZyYW1lSUQsIHBhZ2VJRCk7Cit9CisgICAgCitib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK3sKKyAgICBhdXRv
IGZpcnN0UGFydHlEb21haW4gPSBnZXRQYXJ0aXRpb25pbmdEb21haW4oZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOworICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byByZXNvdXJjZURvbWFpbiA9IGdldFBhcnRpdGlvbmluZ0Rv
bWFpbihyZXNvdXJjZSk7CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZpcnN0UGFydHlEb21haW4gPT0gcmVzb3VyY2VE
b21haW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChwYWdlSUQgJiYgaGFzU3Rv
cmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELnZhbHVlKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7Cit9CisKK3N0ZDo6b3B0aW9u
YWw8U2Vjb25kcz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXhBZ2VDYWNoZUNhcChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgaWYgKG1fY2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXM7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykKK3sKKyAgICBtX2FnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzID0gc2Vjb25kczsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFBy
ZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWlucykKK3sKKyAgICBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5jbGVh
cigpOworICAgIG1fdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLmFkZChkb21h
aW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlu
cykKK3sKKyAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCisgICAgICAgIG1fdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLnJlbW92ZShkb21haW4pOworfQorCitib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJl
c291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK3sKKyAgICBpZiAo
ZnJhbWVJRCkgeworICAgICAgICBhdXRvIGZyYW1lc0dyYW50ZWRJdGVyYXRvciA9IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgICAgICBpZiAoZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yICE9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gaXQgPSBmcmFtZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmZpbmQoZnJh
bWVJRC52YWx1ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdCAhPSBmcmFtZXNHcmFudGVkSXRlcmF0
b3ItPnZhbHVlLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZXNvdXJjZURvbWFpbikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghZmlyc3RQ
YXJ0eURvbWFpbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRv
ciA9IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CisgICAgICAgIGlm
IChwYWdlc0dyYW50ZWRJdGVyYXRvciAhPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5k
KCkpIHsKKyAgICAgICAgICAgIGF1dG8gaXQgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUu
ZmluZChmaXJzdFBhcnR5RG9tYWluKTsKKyAgICAgICAgICAgIGlmIChpdCAhPSBwYWdlc0dyYW50
ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlc291cmNlRG9tYWluKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBl
bnRyaWVzOworICAgIGZvciAoYXV0byYgaW5uZXJNYXAgOiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdl
QWNjZXNzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgdmFsdWUgOiBpbm5lck1hcC52
YWx1ZXMoKSkKKyAgICAgICAgICAgIGVudHJpZXMuYXBwZW5kKHZhbHVlKTsKKyAgICB9CisgICAg
cmV0dXJuIGVudHJpZXM7Cit9CisgICAgCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKQoreworICAgIGlmICghZnJhbWVJRCkgeworICAgICAgICBpZiAoZmlyc3RQ
YXJ0eURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8g
cGFnZXNHcmFudGVkSXRlcmF0b3IgPSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOworICAgICAgICBpZiAocGFnZXNHcmFudGVkSXRlcmF0b3IgPT0gbV9wYWdlc0dyYW50
ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBlbnRyeTsKKyAgICAgICAgICAgIGVudHJ5LmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNv
dXJjZURvbWFpbik7CisgICAgICAgICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuYWRk
KHBhZ2VJRCwgZW50cnkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXV0byBmaXJz
dFBhcnR5RG9tYWluSXRlcmF0b3IgPSBwYWdlc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChm
aXJzdFBhcnR5RG9tYWluKTsKKyAgICAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluSXRlcmF0
b3IgPT0gcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAgICAgICAgICAgICAg
IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5hZGQoZmlyc3RQYXJ0eURvbWFpbiwgcmVzb3Vy
Y2VEb21haW4pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0UGFydHlE
b21haW5JdGVyYXRvci0+dmFsdWUgPSByZXNvdXJjZURvbWFpbjsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRvciA9IG1fZnJh
bWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOworICAgIGlmIChwYWdlc0dyYW50
ZWRJdGVyYXRvciA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKSB7CisgICAg
ICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZywgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNo
LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4gZW50cnk7Cisg
ICAgICAgIGVudHJ5LmFkZChmcmFtZUlELnZhbHVlKCksIHJlc291cmNlRG9tYWluKTsKKyAgICAg
ICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5hZGQocGFnZUlELCBlbnRyeSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBwYWdlc0dyYW50
ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmcmFtZUlELnZhbHVlKCkpOworICAgICAgICBpZiAoZnJh
bWVzR3JhbnRlZEl0ZXJhdG9yID09IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkK
KyAgICAgICAgICAgIHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5hZGQoZnJhbWVJRC52YWx1
ZSgpLCByZXNvdXJjZURvbWFpbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyYW1lc0dy
YW50ZWRJdGVyYXRvci0+dmFsdWUgPSByZXNvdXJjZURvbWFpbjsKKyAgICB9Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQoreworICAgIGF1dG8gaXRlcmF0aW9uID0gbV9m
cmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CisgICAgaWYgKGl0ZXJhdGlv
biA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpdGVyYXRpb24tPnZhbHVlLnJlbW92ZShmcmFtZUlEKTsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNPblBhZ2Uo
dWludDY0X3QgcGFnZUlEKQoreworICAgIG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1v
dmUocGFnZUlEKTsKKyAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdl
SUQpOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlQWxsU3RvcmFnZUFj
Y2VzcygpCit7CisgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmNsZWFyKCk7CisgICAg
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5jbGVhcigpOworfQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyBzZWNvbmRzKQoreworICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJj
ZXMgPSBzZWNvbmRzOworfQorICAgIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQoreworICAgIG1fY2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBzdGQ6Om51bGxvcHQ7Cit9CisjZW5kaWYgLy8g
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
M2UyNzdlZWEwZjcuLjJmYjM5MGY0ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTEwMCwyMiArMTAw
LDYgQEAgcHVibGljOgogICAgIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzaW9u
KCkgeyByZXR1cm4gbV9wbGF0Zm9ybVNlc3Npb24uZ2V0KCk7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSgpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFN0b3JhZ2VBY2Nlc3NBUElFbmFi
bGVkKGJvb2wpOwotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNl
LCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9t
YWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBT
dHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmlu
Zz4gZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JBbGxGcmFtZXNP
blBhZ2UodWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3MoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFNlY29uZHMpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7Ci0jZW5kaWYKICNlbGlmIFVTRShTT1VQKQogICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPFNvdXBOZXR3b3JrU2Vz
c2lvbj4mJik7CiAgICAgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwpAQCAtMTY0LDYgKzE0OCwy
MiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSYpIGNvbnN0OwogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVz
b3VyY2UsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxl
bnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKHN0ZDo6b3B0
aW9uYWw8U2Vjb25kcz4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUHJldmFsZW50
RG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8
U3RyaW5nPiBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckFsbEZy
YW1lc09uUGFnZSh1aW50NjRfdCBwYWdlSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVt
b3ZlQWxsU3RvcmFnZUFjY2VzcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIHN0YXRpYyBIYXNo
TWFwPFBBTDo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Pj4mIGdsb2JhbFNlc3Npb25NYXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
aW5kZXggODFhYmVkMjE0NTAuLjFjY2FiNDNjN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNGTmV0LmNwcApAQCAtMjU0LDE3NSArMjU0LDYgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBzdG9yYWdl
QWNjZXNzQVBJRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotCi1zdGF0aWMgaW5saW5lIFN0cmluZyBnZXRQYXJ0aXRpb25pbmdEb21h
aW4oY29uc3QgVVJMJiB1cmwpCi17Ci0jaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkKLSAg
ICBhdXRvIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKS50
b1N0cmluZygpKTsKLSAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgZG9tYWluID0g
dXJsLmhvc3QoKS50b1N0cmluZygpOwotI2Vsc2UKLSAgICBhdXRvIGRvbWFpbiA9IHVybC5ob3N0
KCkudG9TdHJpbmcoKTsKLSNlbmRpZgotICAgIHJldHVybiBkb21haW47Ci19Ci0KLWJvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFN0
cmluZyYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbikgY29uc3QKLXsKLSAgICBpZiAodG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBtX3RvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9CbG9jay5j
b250YWlucyh0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKTsKLX0KLQotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVz
KHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwg
cGFnZUlEKTsKLX0KLSAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9j
a0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNv
dXJjZSwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKSBjb25zdAotewotICAgIGF1dG8gZmlyc3RQYXJ0eURvbWFpbiA9IGdldFBh
cnRpdGlvbmluZ0RvbWFpbihmaXJzdFBhcnR5Rm9yQ29va2llcyk7Ci0gICAgaWYgKGZpcnN0UGFy
dHlEb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHJl
c291cmNlRG9tYWluID0gZ2V0UGFydGl0aW9uaW5nRG9tYWluKHJlc291cmNlKTsKLSAgICBpZiAo
cmVzb3VyY2VEb21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoZmlyc3RQYXJ0eURvbWFpbiA9PSByZXNvdXJjZURvbWFpbikKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKHBhZ2VJRCAmJiBoYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQudmFsdWUoKSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHJl
c291cmNlRG9tYWluKTsKLX0KLQotc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Om1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
LXsKLSAgICBpZiAobV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyAmJiBzaG91
bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpKQotICAg
ICAgICByZXR1cm4gbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlczsKLSAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRz
KQotewotICAgIG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgPSBzZWNvbmRzOwotfQotCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29r
aWVzRm9yKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQotewotICAgIG1fdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbnNUb0Jsb2NrLmNsZWFyKCk7Ci0gICAgbV90b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc1RvQmxvY2suYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQo
KSk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21h
aW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKQotewotICAgIGZvciAoYXV0byYgZG9t
YWluIDogZG9tYWlucykKLSAgICAgICAgbV90b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1Rv
QmxvY2sucmVtb3ZlKGRvbWFpbik7Ci19Ci0KLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpo
YXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKSBjb25zdAotewotICAgIGlmIChmcmFtZUlEKSB7Ci0gICAgICAgIGF1dG8g
ZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KHBhZ2VJRCk7Ci0gICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3IgIT0gbV9mcmFtZXNH
cmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkgewotICAgICAgICAgICAgYXV0byBpdCA9IGZyYW1l
c0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZmluZChmcmFtZUlELnZhbHVlKCkpOwotICAgICAgICAg
ICAgaWYgKGl0ICE9IGZyYW1lc0dyYW50ZWRJdGVyYXRvci0+dmFsdWUuZW5kKCkgJiYgaXQtPnZh
bHVlID09IHJlc291cmNlRG9tYWluKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkgewot
ICAgICAgICBhdXRvIHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID0gbV9wYWdlc0dyYW50ZWRTdG9yYWdl
QWNjZXNzLmZpbmQocGFnZUlEKTsKLSAgICAgICAgaWYgKHBhZ2VzR3JhbnRlZEl0ZXJhdG9yICE9
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkgewotICAgICAgICAgICAgYXV0byBp
dCA9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZpcnN0UGFydHlEb21haW4pOwot
ICAgICAgICAgICAgaWYgKGl0ICE9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5lbmQoKSAm
JiBpdC0+dmFsdWUgPT0gcmVzb3VyY2VEb21haW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVZlY3RvcjxT
dHJpbmc+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
KSBjb25zdAotewotICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgZm9yIChhdXRvJiBp
bm5lck1hcCA6IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MudmFsdWVzKCkpIHsKLSAgICAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6IGlubmVyTWFwLnZhbHVlcygpKQotICAgICAgICAgICAgZW50
cmllcy5hcHBlbmQodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gZW50cmllczsKLX0KLSAgICAK
LXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCi17Ci0gICAgaWYg
KCFmcmFtZUlEKSB7Ci0gICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBwYWdlc0dyYW50ZWRJdGVyYXRvciA9IG1f
cGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7Ci0gICAgICAgIGlmIChwYWdl
c0dyYW50ZWRJdGVyYXRvciA9PSBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsK
LSAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGVudHJ5OwotICAgICAgICAgICAg
ZW50cnkuYWRkKGZpcnN0UGFydHlEb21haW4sIHJlc291cmNlRG9tYWluKTsKLSAgICAgICAgICAg
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5hZGQocGFnZUlELCBlbnRyeSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIGZpcnN0UGFydHlEb21haW5JdGVyYXRvciA9IHBh
Z2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZpcnN0UGFydHlEb21haW4pOwotICAgICAg
ICAgICAgaWYgKGZpcnN0UGFydHlEb21haW5JdGVyYXRvciA9PSBwYWdlc0dyYW50ZWRJdGVyYXRv
ci0+dmFsdWUuZW5kKCkpCi0gICAgICAgICAgICAgICAgcGFnZXNHcmFudGVkSXRlcmF0b3ItPnZh
bHVlLmFkZChmaXJzdFBhcnR5RG9tYWluLCByZXNvdXJjZURvbWFpbik7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZmlyc3RQYXJ0eURvbWFpbkl0ZXJhdG9yLT52YWx1ZSA9IHJl
c291cmNlRG9tYWluOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBh
dXRvIHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5m
aW5kKHBhZ2VJRCk7Ci0gICAgaWYgKHBhZ2VzR3JhbnRlZEl0ZXJhdG9yID09IG1fZnJhbWVzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3MuZW5kKCkpIHsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3Ry
aW5nLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8dWludDY0X3Q+PiBlbnRyeTsKLSAgICAgICAgZW50cnkuYWRkKGZyYW1lSUQu
dmFsdWUoKSwgcmVzb3VyY2VEb21haW4pOwotICAgICAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdl
QWNjZXNzLmFkZChwYWdlSUQsIGVudHJ5KTsKLSAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGZy
YW1lc0dyYW50ZWRJdGVyYXRvciA9IHBhZ2VzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZS5maW5kKGZy
YW1lSUQudmFsdWUoKSk7Ci0gICAgICAgIGlmIChmcmFtZXNHcmFudGVkSXRlcmF0b3IgPT0gcGFn
ZXNHcmFudGVkSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQotICAgICAgICAgICAgcGFnZXNHcmFudGVk
SXRlcmF0b3ItPnZhbHVlLmFkZChmcmFtZUlELnZhbHVlKCksIHJlc291cmNlRG9tYWluKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZnJhbWVzR3JhbnRlZEl0ZXJhdG9yLT52YWx1ZSA9IHJl
c291cmNlRG9tYWluOwotICAgIH0KLX0KLQotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJl
bW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQpCi17Ci0gICAgYXV0byBpdGVyYXRpb24gPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNz
LmZpbmQocGFnZUlEKTsKLSAgICBpZiAoaXRlcmF0aW9uID09IG1fZnJhbWVzR3JhbnRlZFN0b3Jh
Z2VBY2Nlc3MuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGl0ZXJhdGlvbi0+dmFsdWUu
cmVtb3ZlKGZyYW1lSUQpOwotfQotCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckFsbEZyYW1lc09uUGFnZSh1aW50NjRfdCBwYWdlSUQpCi17Ci0gICAg
bV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwotICAgIG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpyZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCkKLXsKLSAgICBtX3BhZ2VzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3MuY2xlYXIoKTsKLSAgICBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMpCi17Ci0gICAgbV9j
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IHNlY29uZHM7Ci19Ci0gICAgCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcygpCi17Ci0gICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyA9IHN0ZDo6bnVsbG9wdDsKLX0KLSNlbmRpZiAvLyAgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLQogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3Qg
VVJMJikKIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>