<?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>200518</bug_id>
          
          <creation_ts>2019-08-07 14:24:20 -0700</creation_ts>
          <short_desc>[WHLSL] Prune unreachable stdlib functions after the Checker runs</short_desc>
          <delta_ts>2019-08-07 23:24:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559314</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 14:24:20 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559341</commentid>
    <comment_count>1</comment_count>
      <attachid>375757</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 14:59:17 -0700</bug_when>
    <thetext>Created attachment 375757
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559344</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-08-07 15:01:06 -0700</bug_when>
    <thetext>Attachment 375757 did not pass style-queue:


ERROR: Source/WebCore/Modules/webgpu/WHLSL/WHLSLPrepare.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559346</commentid>
    <comment_count>3</comment_count>
      <attachid>375758</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 15:02:24 -0700</bug_when>
    <thetext>Created attachment 375758
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559348</commentid>
    <comment_count>4</comment_count>
      <attachid>375758</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-07 15:12:50 -0700</bug_when>
    <thetext>Comment on attachment 375758
patch

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

I think this patch also makes the ReachableFunctionGatherer that runs later obsolete since it will only ever receive reachable functions.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.cpp:82
&gt; +        if (function-&gt;entryPointType() || function-&gt;parsingMode() != ParsingMode::StandardLibrary)

I don&apos;t think you need the first part of this check: the entryPointType is certainly user-defined, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559350</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 15:29:07 -0700</bug_when>
    <thetext>(In reply to Robin Morisset from comment #4)
&gt; Comment on attachment 375758 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=375758&amp;action=review
&gt; 
&gt; I think this patch also makes the ReachableFunctionGatherer that runs later
&gt; obsolete since it will only ever receive reachable functions.
&gt; 
Not quite. That also prunes native functions.

&gt; &gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.cpp:82
&gt; &gt; +        if (function-&gt;entryPointType() || function-&gt;parsingMode() != ParsingMode::StandardLibrary)
&gt; 
&gt; I don&apos;t think you need the first part of this check: the entryPointType is
&gt; certainly user-defined, no?
Yes this is true. I just thought it&apos;s nice to call it out explicitly, but I can assert instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559353</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 15:30:11 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; (In reply to Robin Morisset from comment #4)
&gt; &gt; Comment on attachment 375758 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=375758&amp;action=review
&gt; &gt; 
&gt; &gt; I think this patch also makes the ReachableFunctionGatherer that runs later
&gt; &gt; obsolete since it will only ever receive reachable functions.
&gt; &gt; 
&gt; Not quite. That also prunes native functions.
More importantly, we can prune non stdlib functions later on.

&gt; 
&gt; &gt; &gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLPruneUnreachableStandardLibraryFunctions.cpp:82
&gt; &gt; &gt; +        if (function-&gt;entryPointType() || function-&gt;parsingMode() != ParsingMode::StandardLibrary)
&gt; &gt; 
&gt; &gt; I don&apos;t think you need the first part of this check: the entryPointType is
&gt; &gt; certainly user-defined, no?
&gt; Yes this is true. I just thought it&apos;s nice to call it out explicitly, but I
&gt; can assert instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559354</commentid>
    <comment_count>7</comment_count>
      <attachid>375758</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-08-07 15:30:36 -0700</bug_when>
    <thetext>Comment on attachment 375758
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559364</commentid>
    <comment_count>8</comment_count>
      <attachid>375763</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-07 16:15:14 -0700</bug_when>
    <thetext>Created attachment 375763
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559441</commentid>
    <comment_count>9</comment_count>
      <attachid>375763</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-07 23:23:04 -0700</bug_when>
    <thetext>Comment on attachment 375763
patch for landing

Clearing flags on attachment: 375763

Committed r248403: &lt;https://trac.webkit.org/changeset/248403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559442</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-07 23:23:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1559443</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-07 23:24:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/54067367&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375757</attachid>
            <date>2019-08-07 14:59:17 -0700</date>
            <delta_ts>2019-08-07 15:02:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11562</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA4LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgQ2hlY2tlciBydW5zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3cgcHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgY2hlY2tlciBydW5zLiBXZSBtdXN0Cisg
ICAgICAgIGRvIHRoaXMgYWZ0ZXIgdGhlIGNoZWNrZXIgcnVucyBiZWNhdXNlIHRoYXQncyB3aGVu
IHdlIHJlc29sdmUgYWxsIHJlbWFpbmluZworICAgICAgICBmdW5jdGlvbiBjYWxscy4gV2hpbGUg
d2UgY2FuJ3QgcHJ1bmUgdW5yZWFjaGFibGUgdXNlciBjb2RlLCBiZWNhdXNlIHdlIG11c3QKKyAg
ICAgICAgc3RpbGwgcmVwb3J0IGVycm9ycyBpbiBpdCwgd2UgY2FuIHBydW5lIHVucmVhY2hhYmxl
IHN0YW5kYXJkIGxpYnJhcnkgY29kZQorICAgICAgICBiZWNhdXNlIHdlIGtub3cgYSBwcmlvcmkg
dGhhdCBpdCBoYXMgbm8gZXJyb3JzLiBUaGlzIGlzIGEgMTBtcyBlbmQtdG8tZW5kCisgICAgICAg
IHNwZWVkdXAgaW4gY29tcHV0ZV9ib2lkcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNo
YXJlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOC0wNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
VW5jYXVnaHQgRXhjZXB0aW9uOiBUaW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIldITFNMTmFtZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiV0hMU0xQYXJzZXIuaCIKICNpbmNsdWRlICJXSExTTFByZXNlcnZlVmFyaWFibGVM
aWZldGltZXMuaCIKKyNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJh
cnlGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJXSExTTFByb2dyYW0uaCIKICNpbmNsdWRlICJXSExT
TFByb3BlcnR5UmVzb2x2ZXIuaCIKICNpbmNsdWRlICJXSExTTFJlY3Vyc2lvbkNoZWNrZXIuaCIK
QEAgLTE4Myw2ICsxODQsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8UHJvZ3JhbSwgU3RyaW5nPiBwcmVw
YXJlCiAgICAgQ0hFQ0tfUEFTUyhjaGVja0R1cGxpY2F0ZUZ1bmN0aW9ucywgcHJvZ3JhbSk7CiAK
ICAgICBDSEVDS19QQVNTKGNoZWNrLCBwcm9ncmFtKTsKKyAgICBSVU5fUEFTUyhwcnVuZVVucmVh
Y2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLCBwcm9ncmFtKTsKIAogICAgIFJVTl9QQVNT
KGNoZWNrTGl0ZXJhbFR5cGVzLCBwcm9ncmFtKTsKICAgICBDSEVDS19QQVNTKGNoZWNrVGV4dHVy
ZVJlZmVyZW5jZXMsIHByb2dyYW0pOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJl
YWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgiCisKKyNpZiBF
TkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xBU1QuaCIKKyNpbmNsdWRlICJXSExTTFBy
b2dyYW0uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitj
bGFzcyBSZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMgZmluYWwgOiBwdWJsaWMgVmlzaXRvciB7Citw
dWJsaWM6CisgICAgdm9pZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb24p
IG92ZXJyaWRlCisgICAgeworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVhY2hhYmxlRnVu
Y3Rpb25zLmFkZCgmZnVuY3Rpb24pOworICAgICAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkp
CisgICAgICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbik7CisgICAgfQorCisgICAgdm9p
ZCB2aXNpdChBU1Q6OkNhbGxFeHByZXNzaW9uJiBjYWxsRXhwcmVzc2lvbikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KGNhbGxFeHByZXNzaW9uKTsKKyAgICAgICAgaWYg
KGlzPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxsRXhwcmVzc2lvbi5mdW5jdGlvbigpKSkK
KyAgICAgICAgICAgIHZpc2l0KGRvd25jYXN0PEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPihjYWxs
RXhwcmVzc2lvbi5mdW5jdGlvbigpKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OlBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbiYgZXhwcmVzc2lvbikgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIGF1dG8gdmlzaXRGdW5jdGlvbiA9IFsmXSAoQVNUOjpGdW5jdGlvbkRlY2xhcmF0aW9uKiBm
dW5jdGlvbikgeworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KCpmdW5j
dGlvbikpCisgICAgICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlvbkRlZmlu
aXRpb24+KCpmdW5jdGlvbikpOworICAgICAgICB9OworCisgICAgICAgIHZpc2l0RnVuY3Rpb24o
ZXhwcmVzc2lvbi5nZXR0ZXJGdW5jdGlvbigpKTsKKyAgICAgICAgdmlzaXRGdW5jdGlvbihleHBy
ZXNzaW9uLmFuZGVyRnVuY3Rpb24oKSk7CisgICAgICAgIHZpc2l0RnVuY3Rpb24oZXhwcmVzc2lv
bi50aHJlYWRBbmRlckZ1bmN0aW9uKCkpOworICAgICAgICB2aXNpdEZ1bmN0aW9uKGV4cHJlc3Np
b24uc2V0dGVyRnVuY3Rpb24oKSk7CisKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoZXhwcmVzc2lv
bik7CisgICAgfQorCisgICAgSGFzaFNldDxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbio+IHRha2VS
ZWFjaGFibGVGdW5jdGlvbnMoKSB7IHJldHVybiBXVEZNb3ZlKG1fcmVhY2hhYmxlRnVuY3Rpb25z
KTsgfQorCitwcml2YXRlOgorICAgIEhhc2hTZXQ8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24qPiBt
X3JlYWNoYWJsZUZ1bmN0aW9uczsKK307CisKK3ZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucyhQcm9ncmFtJiBwcm9ncmFtKQoreworICAgIFJlYWNoYWJsZVN0ZGxp
YkZ1bmN0aW9ucyByZWFjaGFibGVTdGRsaWJGdW5jdGlvbnM7CisgICAgVmVjdG9yPFVuaXF1ZVJl
ZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IGZ1bmN0aW9uRGVmaW5pdGlvbnMgPSBXVEZNb3Zl
KHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKTsKKyAgICBmb3IgKGF1dG8mIGZ1bmN0aW9u
IDogZnVuY3Rpb25EZWZpbml0aW9ucykgeworICAgICAgICBpZiAoZnVuY3Rpb24tPmVudHJ5UG9p
bnRUeXBlKCkgfHwgZnVuY3Rpb24tPnBhcnNpbmdNb2RlKCkgIT0gUGFyc2luZ01vZGU6OlN0YW5k
YXJkTGlicmFyeSkKKyAgICAgICAgICAgIHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy52aXNpdChm
dW5jdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgYXV0byByZWFjaGFibGVGdW5jdGlvbnMgPSBy
ZWFjaGFibGVTdGRsaWJGdW5jdGlvbnMudGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpOworICAgIFZl
Y3RvcjxVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+PiBuZXdGdW5jdGlvbkRlZmlu
aXRpb25zOworICAgIGZvciAoVW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPiYgZW50
cnkgOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7CisgICAgICAgIGlmIChyZWFjaGFibGVGdW5jdGlv
bnMuY29udGFpbnMoJmVudHJ5LmdldCgpKSkKKyAgICAgICAgICAgIG5ld0Z1bmN0aW9uRGVmaW5p
dGlvbnMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICB9CisKKyAgICBwcm9ncmFtLmZ1bmN0
aW9uRGVmaW5pdGlvbnMoKSA9IFdURk1vdmUobmV3RnVuY3Rpb25EZWZpbml0aW9ucyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShXRUJHUFUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFByb2dyYW07CisK
K3ZvaWQgcHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyhQcm9ncmFtJik7
CisKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtODMxOSw2ICs4MzE5LDggQEAKIAkJNTIyRTFBMTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNM
UHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFByZXNlcnZl
VmFyaWFibGVMaWZldGltZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0
RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJG
REY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBX
SExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QjNGMDMyMkZCN0JERTAwNzZE
MzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI5MTRDMkEyMkY5M0U0RTAwNTc4
MTUwIC8qIFdITFNMUGFyc2luZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xQYXJzaW5nTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjkxNEMyQzIyRjkzRTVEMDA1Nzgx
NTAgLyogV0hMU0xBZGRyZXNzRXNjYXBlTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEFkZHJl
c3NFc2NhcGVNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1
N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTUzMSw2ICsyNTUzMyw4IEBACiAJCQkJQzI0QTU3QkIyMUZFQUZFQTAwNEM2REQxIC8qIFdITFNM
UHJlcGFyZS5oICovLAogCQkJCTUyMkUxQTE3MjI5N0Q2RDQwMEU1RDM2QSAvKiBXSExTTFByZXNl
cnZlVmFyaWFibGVMaWZldGltZXMuY3BwICovLAogCQkJCTUyMkUxQTE5MjI5N0Q2RDQwMEU1RDM2
QSAvKiBXSExTTFByZXNlcnZlVmFyaWFibGVMaWZldGltZXMuaCAqLywKKwkJCQk1MjZCM0YwMTIy
RkI3QkREMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25zLmNwcCAqLywKKwkJCQk1MjZCM0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVu
ZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmggKi8sCiAJCQkJQzIxQkY3M0Ey
MUNEOEQ3MDAwMjI3OTc5IC8qIFdITFNMUHJvZ3JhbS5oICovLAogCQkJCTFDQUE4MkY2MjI0MkFF
MDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuY3BwICovLAogCQkJCTFDQUE4MkY3
MjI0MkFFMDUwMEU4NEJCQiAvKiBXSExTTFByb3BlcnR5UmVzb2x2ZXIuaCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375758</attachid>
            <date>2019-08-07 15:02:24 -0700</date>
            <delta_ts>2019-08-07 16:15:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11579</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA4LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgQ2hlY2tlciBydW5zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBub3cgcHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgY2hlY2tlciBydW5zLiBXZSBtdXN0Cisg
ICAgICAgIGRvIHRoaXMgYWZ0ZXIgdGhlIGNoZWNrZXIgcnVucyBiZWNhdXNlIHRoYXQncyB3aGVu
IHdlIHJlc29sdmUgYWxsIHJlbWFpbmluZworICAgICAgICBmdW5jdGlvbiBjYWxscy4gV2hpbGUg
d2UgY2FuJ3QgcHJ1bmUgdW5yZWFjaGFibGUgdXNlciBjb2RlLCBiZWNhdXNlIHdlIG11c3QKKyAg
ICAgICAgc3RpbGwgcmVwb3J0IGVycm9ycyBpbiBpdCwgd2UgY2FuIHBydW5lIHVucmVhY2hhYmxl
IHN0YW5kYXJkIGxpYnJhcnkgY29kZQorICAgICAgICBiZWNhdXNlIHdlIGtub3cgYSBwcmlvcmkg
dGhhdCBpdCBoYXMgbm8gZXJyb3JzLiBUaGlzIGlzIGEgMTBtcyBlbmQtdG8tZW5kCisgICAgICAg
IHNwZWVkdXAgaW4gY29tcHV0ZV9ib2lkcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNo
YXJlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOC0wNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
VW5jYXVnaHQgRXhjZXB0aW9uOiBUaW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5oIgogI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldITFNMUHJv
cGVydHlSZXNvbHZlci5oIgorI2luY2x1ZGUgIldITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgog
I2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCIKICNpbmNsdWRlICJXSExTTFNl
bWFudGljTWF0Y2hlci5oIgpAQCAtMTgzLDYgKzE4NCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxQcm9n
cmFtLCBTdHJpbmc+IHByZXBhcmUKICAgICBDSEVDS19QQVNTKGNoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLCBwcm9ncmFtKTsKIAogICAgIENIRUNLX1BBU1MoY2hlY2ssIHByb2dyYW0pOworICAgIFJV
Tl9QQVNTKHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMsIHByb2dyYW0p
OwogCiAgICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlwZXMsIHByb2dyYW0pOwogICAgIENIRUNL
X1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJvZ3JhbSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgor
I2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK2NsYXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6IHB1
YmxpYyBWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbik7CisgICAgICAgIGlmIChhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uKTsK
KyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNz
aW9uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Np
b24pOworICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNz
aW9uLmZ1bmN0aW9uKCkpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKKyAgICB9CisKKyAgICB2
b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgYXV0byB2aXNpdEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbj4oKmZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oKmZ1bmN0aW9uKSk7CisgICAgICAgIH07CisKKyAgICAg
ICAgdmlzaXRGdW5jdGlvbihleHByZXNzaW9uLmdldHRlckZ1bmN0aW9uKCkpOworICAgICAgICB2
aXNpdEZ1bmN0aW9uKGV4cHJlc3Npb24uYW5kZXJGdW5jdGlvbigpKTsKKyAgICAgICAgdmlzaXRG
dW5jdGlvbihleHByZXNzaW9uLnRocmVhZEFuZGVyRnVuY3Rpb24oKSk7CisgICAgICAgIHZpc2l0
RnVuY3Rpb24oZXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlvbigpKTsKKworICAgICAgICBWaXNpdG9y
Ojp2aXNpdChleHByZXNzaW9uKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUobV9y
ZWFjaGFibGVGdW5jdGlvbnMpOyB9CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOworfTsKKwordm9pZCBwcnVuZVVu
cmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCit7Cisg
ICAgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9uczsKKyAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gZnVuY3Rpb25EZWZp
bml0aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpOworICAgIGZv
ciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbi0+ZW50cnlQb2ludFR5cGUoKSB8fCBmdW5jdGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQ
YXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQorICAgICAgICAgICAgcmVhY2hhYmxlU3RkbGli
RnVuY3Rpb25zLnZpc2l0KGZ1bmN0aW9uLmdldCgpKTsKKyAgICB9CisKKyAgICBhdXRvIHJlYWNo
YWJsZUZ1bmN0aW9ucyA9IHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVhY2hhYmxlRnVu
Y3Rpb25zKCk7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+
IG5ld0Z1bmN0aW9uRGVmaW5pdGlvbnM7CisgICAgZm9yIChVbmlxdWVSZWY8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+JiBlbnRyeSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKKyAgICAgICAgaWYg
KHJlYWNoYWJsZUZ1bmN0aW9ucy5jb250YWlucygmZW50cnkuZ2V0KCkpKQorICAgICAgICAgICAg
bmV3RnVuY3Rpb25EZWZpbml0aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIH0KKwor
ICAgIHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdGdW5jdGlvbkRl
ZmluaXRpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFy
eUZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
UHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShXRUJHUFUpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKwor
Y2xhc3MgUHJvZ3JhbTsKKwordm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVu
Y3Rpb25zKFByb2dyYW0mKTsKKworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ4
MzI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC04MzE5LDYgKzgzMTksOCBAQAogCQk1MjJFMUExOTIyOTdENkQ0
MDBFNUQzNkEgLyogV0hMU0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRl
eHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNv
Y29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QjNGMDEyMkZC
N0JERDAwNzZEMzdEIC8qIFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFy
ZExpYnJhcnlGdW5jdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjZC
M0YwMzIyRkI3QkRFMDA3NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJy
YXJ5RnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5k
YXJkTGlicmFyeUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Mjkx
NEMyQTIyRjkzRTRFMDA1NzgxNTAgLyogV0hMU0xQYXJzaW5nTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXSExTTFBhcnNpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyOTE0
QzJDMjJGOTNFNUQwMDU3ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdITFNMQWRkcmVzc0VzY2FwZU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI1NTMxLDYgKzI1NTMzLDggQEAKIAkJCQlDMjRBNTdCQjIxRkVBRkVB
MDA0QzZERDEgLyogV0hMU0xQcmVwYXJlLmggKi8sCiAJCQkJNTIyRTFBMTcyMjk3RDZENDAwRTVE
MzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8sCiAJCQkJNTIyRTFB
MTkyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICov
LAorCQkJCTUyNkIzRjAxMjJGQjdCREQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVT
dGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwICovLAorCQkJCTUyNkIzRjAzMjJGQjdCREUwMDc2
RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCAq
LywKIAkJCQlDMjFCRjczQTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8sCiAJ
CQkJMUNBQTgyRjYyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAg
Ki8sCiAJCQkJMUNBQTgyRjcyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZl
ci5oICovLAo=
</data>
<flag name="review"
          id="391545"
          type_id="1"
          status="+"
          setter="rmorisset"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375763</attachid>
            <date>2019-08-07 16:15:14 -0700</date>
            <delta_ts>2019-08-07 23:23:04 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11621</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE5LTA4LTA3ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gUHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgQ2hlY2tlciBydW5zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1MTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBSb2JpbiBNb3Jpc3NldC4KKworICAgICAgICBXZSBub3cgcHJ1bmUgdW5yZWFj
aGFibGUgc3RkbGliIGZ1bmN0aW9ucyBhZnRlciB0aGUgY2hlY2tlciBydW5zLiBXZSBtdXN0Cisg
ICAgICAgIGRvIHRoaXMgYWZ0ZXIgdGhlIGNoZWNrZXIgcnVucyBiZWNhdXNlIHRoYXQncyB3aGVu
IHdlIHJlc29sdmUgYWxsIHJlbWFpbmluZworICAgICAgICBmdW5jdGlvbiBjYWxscy4gV2hpbGUg
d2UgY2FuJ3QgcHJ1bmUgdW5yZWFjaGFibGUgdXNlciBjb2RlLCBiZWNhdXNlIHdlIG11c3QKKyAg
ICAgICAgc3RpbGwgcmVwb3J0IGVycm9ycyBpbiBpdCwgd2UgY2FuIHBydW5lIHVucmVhY2hhYmxl
IHN0YW5kYXJkIGxpYnJhcnkgY29kZQorICAgICAgICBiZWNhdXNlIHdlIGtub3cgYSBwcmlvcmkg
dGhhdCBpdCBoYXMgbm8gZXJyb3JzLiBUaGlzIGlzIGEgMTBtcyBlbmQtdG8tZW5kCisgICAgICAg
IHNwZWVkdXAgaW4gY29tcHV0ZV9ib2lkcy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUHJlcGFyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6cHJlcGFyZVNo
YXJlZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hh
YmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXSExTTDo6cHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRM
aWJyYXJ5RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wOC0wNyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
VW5jYXVnaHQgRXhjZXB0aW9uOiBUaW1lbGluZUFnZW50IGFscmVhZHkgZW5hYmxlZApJbmRleDog
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDI0ODMyOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xBU1REdW1wZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEluZmVyVHlw
ZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExleGVyLmNwcAogTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xQYXJzZXIuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5l
VW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTENoZWNrVGV4dHVyZVJlZmVyZW5jZXMuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExT
TC9XSExTTENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEdhdGhlckVudHJ5
UG9pbnRJdGVtcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMUHJlcGFyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkocmV2aXNpb24gMjQ4MzkyKQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIldITFNMUHJlc2VydmVWYXJpYWJsZUxp
ZmV0aW1lcy5oIgogI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldITFNMUHJv
cGVydHlSZXNvbHZlci5oIgorI2luY2x1ZGUgIldITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJk
TGlicmFyeUZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIldITFNMUmVjdXJzaW9uQ2hlY2tlci5oIgog
I2luY2x1ZGUgIldITFNMUmVjdXJzaXZlVHlwZUNoZWNrZXIuaCIKICNpbmNsdWRlICJXSExTTFNl
bWFudGljTWF0Y2hlci5oIgpAQCAtMTgzLDYgKzE4NCw3IEBAIHN0YXRpYyBFeHBlY3RlZDxQcm9n
cmFtLCBTdHJpbmc+IHByZXBhcmUKICAgICBDSEVDS19QQVNTKGNoZWNrRHVwbGljYXRlRnVuY3Rp
b25zLCBwcm9ncmFtKTsKIAogICAgIENIRUNLX1BBU1MoY2hlY2ssIHByb2dyYW0pOworICAgIFJV
Tl9QQVNTKHBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMsIHByb2dyYW0p
OwogCiAgICAgUlVOX1BBU1MoY2hlY2tMaXRlcmFsVHlwZXMsIHByb2dyYW0pOwogICAgIENIRUNL
X1BBU1MoY2hlY2tUZXh0dXJlUmVmZXJlbmNlcywgcHJvZ3JhbSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExp
YnJhcnlGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9u
cy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbnMuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTEFTVC5oIgor
I2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVz
cGFjZSBXSExTTCB7CisKK2NsYXNzIFJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucyBmaW5hbCA6IHB1
YmxpYyBWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICB2b2lkIHZpc2l0KEFTVDo6RnVuY3Rpb25EZWZp
bml0aW9uJiBmdW5jdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9yZWFjaGFibGVGdW5jdGlvbnMuYWRkKCZmdW5jdGlvbik7CisgICAgICAgIGlmIChhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uKTsK
KyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6Q2FsbEV4cHJlc3Npb24mIGNhbGxFeHByZXNz
aW9uKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoY2FsbEV4cHJlc3Np
b24pOworICAgICAgICBpZiAoaXM8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+KGNhbGxFeHByZXNz
aW9uLmZ1bmN0aW9uKCkpKQorICAgICAgICAgICAgdmlzaXQoZG93bmNhc3Q8QVNUOjpGdW5jdGlv
bkRlZmluaXRpb24+KGNhbGxFeHByZXNzaW9uLmZ1bmN0aW9uKCkpKTsKKyAgICB9CisKKyAgICB2
b2lkIHZpc2l0KEFTVDo6UHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uJiBleHByZXNzaW9uKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgYXV0byB2aXNpdEZ1bmN0aW9uID0gWyZdIChBU1Q6OkZ1bmN0
aW9uRGVjbGFyYXRpb24qIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChpczxBU1Q6OkZ1bmN0aW9u
RGVmaW5pdGlvbj4oKmZ1bmN0aW9uKSkKKyAgICAgICAgICAgICAgICB2aXNpdChkb3duY2FzdDxB
U1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4oKmZ1bmN0aW9uKSk7CisgICAgICAgIH07CisKKyAgICAg
ICAgdmlzaXRGdW5jdGlvbihleHByZXNzaW9uLmdldHRlckZ1bmN0aW9uKCkpOworICAgICAgICB2
aXNpdEZ1bmN0aW9uKGV4cHJlc3Npb24uYW5kZXJGdW5jdGlvbigpKTsKKyAgICAgICAgdmlzaXRG
dW5jdGlvbihleHByZXNzaW9uLnRocmVhZEFuZGVyRnVuY3Rpb24oKSk7CisgICAgICAgIHZpc2l0
RnVuY3Rpb24oZXhwcmVzc2lvbi5zZXR0ZXJGdW5jdGlvbigpKTsKKworICAgICAgICBWaXNpdG9y
Ojp2aXNpdChleHByZXNzaW9uKTsKKyAgICB9CisKKyAgICBIYXNoU2V0PEFTVDo6RnVuY3Rpb25E
ZWZpbml0aW9uKj4gdGFrZVJlYWNoYWJsZUZ1bmN0aW9ucygpIHsgcmV0dXJuIFdURk1vdmUobV9y
ZWFjaGFibGVGdW5jdGlvbnMpOyB9CisKK3ByaXZhdGU6CisgICAgSGFzaFNldDxBU1Q6OkZ1bmN0
aW9uRGVmaW5pdGlvbio+IG1fcmVhY2hhYmxlRnVuY3Rpb25zOworfTsKKwordm9pZCBwcnVuZVVu
cmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0mIHByb2dyYW0pCit7Cisg
ICAgUmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zIHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9uczsKKyAg
ICBWZWN0b3I8VW5pcXVlUmVmPEFTVDo6RnVuY3Rpb25EZWZpbml0aW9uPj4gZnVuY3Rpb25EZWZp
bml0aW9ucyA9IFdURk1vdmUocHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpOworICAgIGZv
ciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbkRlZmluaXRpb25zKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbi0+cGFyc2luZ01vZGUoKSAhPSBQYXJzaW5nTW9kZTo6U3RhbmRhcmRMaWJyYXJ5KQor
ICAgICAgICAgICAgcmVhY2hhYmxlU3RkbGliRnVuY3Rpb25zLnZpc2l0KGZ1bmN0aW9uLmdldCgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWZ1bmN0aW9uLT5l
bnRyeVBvaW50VHlwZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIHJlYWNoYWJsZUZ1bmN0aW9ucyA9
IHJlYWNoYWJsZVN0ZGxpYkZ1bmN0aW9ucy50YWtlUmVhY2hhYmxlRnVuY3Rpb25zKCk7CisgICAg
VmVjdG9yPFVuaXF1ZVJlZjxBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbj4+IG5ld0Z1bmN0aW9uRGVm
aW5pdGlvbnM7CisgICAgZm9yIChVbmlxdWVSZWY8QVNUOjpGdW5jdGlvbkRlZmluaXRpb24+JiBl
bnRyeSA6IGZ1bmN0aW9uRGVmaW5pdGlvbnMpIHsKKyAgICAgICAgaWYgKHJlYWNoYWJsZUZ1bmN0
aW9ucy5jb250YWlucygmZW50cnkuZ2V0KCkpKQorICAgICAgICAgICAgbmV3RnVuY3Rpb25EZWZp
bml0aW9ucy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIH0KKworICAgIHByb2dyYW0uZnVu
Y3Rpb25EZWZpbml0aW9ucygpID0gV1RGTW92ZShuZXdGdW5jdGlvbkRlZmluaXRpb25zKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV0hMU0wKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdQVSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1
bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUHJ1bmVVbnJlYWNoYWJs
ZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShXRUJHUFUpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgUHJvZ3JhbTsK
Kwordm9pZCBwcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zKFByb2dyYW0m
KTsKKworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ4MzI5KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC04MzE5LDYgKzgzMTksOCBAQAogCQk1MjJFMUExOTIyOTdENkQ0MDBFNUQzNkEgLyogV0hM
U0xQcmVzZXJ2ZVZhcmlhYmxlTGlmZXRpbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUHJlc2Vy
dmVWYXJpYWJsZUxpZmV0aW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3
MjRGMTFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYyMUNC
MkZERjYwMDc1OTc0RCAvKiBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QjNGMDEyMkZCN0JERDAwNzZEMzdEIC8q
IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjZCM0YwMzIyRkI3QkRFMDA3
NkQzN0QgLyogV0hMU0xQcnVuZVVucmVhY2hhYmxlU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdITFNMUHJ1bmVVbnJlYWNoYWJsZVN0YW5kYXJkTGlicmFyeUZ1bmN0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjkxNEMyQTIyRjkzRTRFMDA1
NzgxNTAgLyogV0hMU0xQYXJzaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFBhcnNpbmdN
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyOTE0QzJDMjJGOTNFNUQwMDU3
ODE1MCAvKiBXSExTTEFkZHJlc3NFc2NhcGVNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMQWRk
cmVzc0VzY2FwZU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QkQx
QzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI1NTMxLDYgKzI1NTMzLDggQEAKIAkJCQlDMjRBNTdCQjIxRkVBRkVBMDA0QzZERDEgLyogV0hM
U0xQcmVwYXJlLmggKi8sCiAJCQkJNTIyRTFBMTcyMjk3RDZENDAwRTVEMzZBIC8qIFdITFNMUHJl
c2VydmVWYXJpYWJsZUxpZmV0aW1lcy5jcHAgKi8sCiAJCQkJNTIyRTFBMTkyMjk3RDZENDAwRTVE
MzZBIC8qIFdITFNMUHJlc2VydmVWYXJpYWJsZUxpZmV0aW1lcy5oICovLAorCQkJCTUyNkIzRjAx
MjJGQjdCREQwMDc2RDM3RCAvKiBXSExTTFBydW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlG
dW5jdGlvbnMuY3BwICovLAorCQkJCTUyNkIzRjAzMjJGQjdCREUwMDc2RDM3RCAvKiBXSExTTFBy
dW5lVW5yZWFjaGFibGVTdGFuZGFyZExpYnJhcnlGdW5jdGlvbnMuaCAqLywKIAkJCQlDMjFCRjcz
QTIxQ0Q4RDcwMDAyMjc5NzkgLyogV0hMU0xQcm9ncmFtLmggKi8sCiAJCQkJMUNBQTgyRjYyMjQy
QUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5jcHAgKi8sCiAJCQkJMUNBQTgy
RjcyMjQyQUUwNTAwRTg0QkJCIC8qIFdITFNMUHJvcGVydHlSZXNvbHZlci5oICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>