<?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>41489</bug_id>
          
          <creation_ts>2010-07-01 15:02:51 -0700</creation_ts>
          <short_desc>Make process launching asynchronous</short_desc>
          <delta_ts>2010-07-14 11:27:37 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>245571</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-07-01 15:02:51 -0700</bug_when>
    <thetext>Make process launching asynchronous</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245577</commentid>
    <comment_count>1</comment_count>
      <attachid>60294</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-07-01 15:12:09 -0700</bug_when>
    <thetext>Created attachment 60294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245578</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-01 15:13:10 -0700</bug_when>
    <thetext>Attachment 60294 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/UIProcess/Launcher/win/ProcessLauncherWin.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/Launcher/ProcessLauncher.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 11 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>245587</commentid>
    <comment_count>3</comment_count>
      <attachid>60294</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-01 15:24:52 -0700</bug_when>
    <thetext>Comment on attachment 60294
Patch

&gt; +    // Register ourselves.
&gt; +    kern_return_t kr = bootstrap_register2(bootstrap_port, (char*)&quot;com.apple.WebKit.WebProcess&quot;, listeningPort, /* BOOTSTRAP_PER_PID_SERVICE */ 1);
&gt; +    if (kr)
&gt; +        NSLog(@&quot;bootstrap_register2 result: %x&quot;, kr);
&gt; +    
&gt; +    pid_t processIdentifier;
&gt; +    int result = posix_spawn(&amp;processIdentifier, path, 0, 0, (char *const*)args, *_NSGetEnviron());
&gt; +    if (result)
&gt; +        NSLog(@&quot;posix_spawn result: %d&quot;, result);

Not a new issue but, should we bail on errors here?

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251308</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-07-14 11:27:37 -0700</bug_when>
    <thetext>Committed r62305: &lt;http://trac.webkit.org/changeset/62305&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60294</attachid>
            <date>2010-07-01 15:12:09 -0700</date>
            <delta_ts>2010-07-01 15:24:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41489-20100701151208.patch</filename>
            <type>text/plain</type>
            <size>37481</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZmQ3MWE2YTY5N2E2MDljNzAwNjc2ZTEwMDNlYjliYzhiYWZiOTMwZC4uZGVjM2JiMzdmZWNlMThm
MTAzMWM4ZjRmM2MxZDg3MDI4YTRiMWM0OSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMC0wNy0wMSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcHJvY2VzcyBsYXVuY2hpbmcgYXN5bmNo
cm9ub3VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTQ4OQorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAg
IE1ha2UgT3V0Z29pbmdNZXNzYWdlIHB1YmxpYy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9DaHVu
a2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWludCk6CisgICAgICAgIERvbid0IHdhaXQgZm9yIGEg
cGFpbnQgcmVwbHkgd2hlbiB0aGUgcHJvY2VzcyBpcyBzdGFydGluZyB1cC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
QWRkIG5ldyBQcm9jZXNzTGF1bmNoZXIgY2xhc3MuCisKKyAgICAgICAgKFdlYktpdDo6cHJvY2Vz
c0xhdW5jaGVyV29ya1F1ZXVlKToKKyAgICAgICAgUmV0dXJucyB0aGUgd29yayBxdWV1ZSB3aGVy
ZSBwcm9jZXNzIGxhdW5jaGluZyB3aWxsIGhhcHBlbi4KKworICAgICAgICAoV2ViS2l0OjpQcm9j
ZXNzTGF1bmNoZXI6OlByb2Nlc3NMYXVuY2hlcik6CisgICAgICAgIFNjaGVkdWxlIGxhdW5jaGlu
ZyB0aGUgcHJvY2Vzcy4KKworICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3MpOgorICAgICAgICBDYWxsIHRoZSBjbGllbnQgbWV0aG9kLgor
ICAgICAgICAKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjppbnZhbGlkYXRlKToK
KyAgICAgICAgU2V0IHRoZSBjbGllbnQgdG8gMC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVu
Y2hlci9Qcm9jZXNzTGF1bmNoZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oOiBSZW1vdmVkLgorICAgICAgICBSZW5hbWUgV2ViUHJv
Y2Vzc0xhdW5jaGVyLmggLT4gUHJvY2Vzc0xhdW5jaGVyLmgKKworICAgICAgICAqIFVJUHJvY2Vz
cy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvTGF1bmNoZXIvbWFjL1dlYlByb2Nlc3NMYXVuY2hlci5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgUmVuYW1lIFdlYlByb2Nlc3NMYXVuY2hlci5tbSAtPiBQcm9jZXNzTGF1bmNoZXJNYWMu
bW0sIHVwZGF0ZSBmb3IgUHJvY2Vzc0xhdW5jaGVyIGNoYW5nZXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vV2ViUHJvY2Vzc0xhdW5jaGVyLmNwcDogUmVtb3Zl
ZC4KKyAgICAgICAgUmVuYW1lIFdlYlByb2Nlc3NMYXVuY2hlci5jcHAgLT4gUHJvY2Vzc0xhdW5j
aGVyV2luLmNwcCwgdXBkYXRlIGZvciBQcm9jZXNzTGF1bmNoZXIgY2hhbmdlcy4KKyAgICAgICAg
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSk6CisgICAgICAgIERlbGV0ZSBh
bnkgdW5zZW50IG1lc3NhZ2VzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
Y29ubmVjdCk6CisgICAgICAgIFVzZSB0aGUgbmV3IFByb2Nlc3NMYXVuY2hlci4KKworICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKToKKyAgICAgICAgSWYgd2Un
cmUgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MgdG8gbGF1bmNoLCB0aGUgbWVzc2FnZXMgbmVlZCB0
byBiZSBlbnF1ZXVlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZEZp
bmlzaExhdW5jaGluZyk6CisgICAgICAgIFNlbmQgdGhlIG91dGdvaW5nIG1lc3NhZ2VzLgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdp
bi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAgVXBkYXRlIGZvciByZW5hbWVzLgorCiAyMDEwLTA3
LTAxICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGguY2hyaXN0aWFuc2VuQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IFNhbSBXZWluaWcuCmRpZmYg
LS1naXQgYS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oIGIvV2ViS2l0Mi9Q
bGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA3NTVlZGNiNmVjNDM2MThiODc5Mjdm
Y2FiZmYyY2MzOWZjNTUyZmQwLi41YTIxZDI2MDYyNTA2MmM3OWJhOTkwODdlNWVhMjFlMjNhMzcw
YzIyIDEwMDY0NAotLS0gYS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5oCisr
KyBiL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmgKQEAgLTkxLDYgKzkxLDMx
IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRNZXNzYWdlKE1lc3NhZ2VJRCwgc3RkOjphdXRvX3B0
cjxBcmd1bWVudEVuY29kZXI+KTsKIAogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBNZXNzYWdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE1lc3NhZ2UoTWVzc2FnZUlE
IG1lc3NhZ2VJRCwgc3RkOjphdXRvX3B0cjxUPiBhcmd1bWVudHMpCisgICAgICAgICAgICA6IG1f
bWVzc2FnZUlEKG1lc3NhZ2VJRCkKKyAgICAgICAgICAgICwgbV9hcmd1bWVudHMoYXJndW1lbnRz
LnJlbGVhc2UoKSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBNZXNz
YWdlSUQgbWVzc2FnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlSUQ7IH0KKyAgICAgICAg
VCogYXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudHM7IH0KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgZGVzdHJveSgpIAorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbV9h
cmd1bWVudHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgTWVz
c2FnZUlEIG1fbWVzc2FnZUlEOworICAgICAgICBUKiBtX2FyZ3VtZW50czsKKyAgICB9OworCitw
dWJsaWM6CisgICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RW5jb2Rlcj4gT3V0Z29pbmdNZXNz
YWdlOworCitwcml2YXRlOgogICAgIENvbm5lY3Rpb24oSWRlbnRpZmllciwgYm9vbCBpc1NlcnZl
ciwgQ2xpZW50KiwgUnVuTG9vcCogY2xpZW50UnVuTG9vcCk7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoSWRlbnRpZmllcik7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKQEAg
LTExOCwyNyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICBXb3JrUXVldWUgbV9jb25uZWN0aW9uUXVl
dWU7CiAgICAgUnVuTG9vcCogbV9jbGllbnRSdW5Mb29wOwogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gY2xhc3MgTWVzc2FnZSB7Ci0gICAgcHVibGljOgotICAgICAgICBNZXNzYWdlKE1lc3Nh
Z2VJRCBtZXNzYWdlSUQsIHN0ZDo6YXV0b19wdHI8VD4gYXJndW1lbnRzKQotICAgICAgICAgICAg
OiBtX21lc3NhZ2VJRChtZXNzYWdlSUQpCi0gICAgICAgICAgICAsIG1fYXJndW1lbnRzKGFyZ3Vt
ZW50cy5yZWxlYXNlKCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
TWVzc2FnZUlEIG1lc3NhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZUlEOyB9Ci0gICAg
ICAgIFQqIGFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXJndW1lbnRzOyB9Ci0gICAgICAg
IAotICAgICAgICB2b2lkIGRlc3Ryb3koKSAKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRl
IG1fYXJndW1lbnRzOwotICAgICAgICB9Ci0gICAgICAgIAotICAgIHByaXZhdGU6Ci0gICAgICAg
IE1lc3NhZ2VJRCBtX21lc3NhZ2VJRDsKLSAgICAgICAgVCogbV9hcmd1bWVudHM7Ci0gICAgfTsK
LQogICAgIC8vIEluY29taW5nIG1lc3NhZ2VzLgogICAgIHR5cGVkZWYgTWVzc2FnZTxBcmd1bWVu
dERlY29kZXI+IEluY29taW5nTWVzc2FnZTsKIApAQCAtMTQ2LDggKzE1MCw2IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPEluY29taW5nTWVzc2FnZT4gbV9pbmNvbWluZ01lc3NhZ2VzOwogCiAgICAg
Ly8gT3V0Z29pbmcgbWVzc2FnZXMuCi0gICAgdHlwZWRlZiBNZXNzYWdlPEFyZ3VtZW50RW5jb2Rl
cj4gT3V0Z29pbmdNZXNzYWdlOwotCiAgICAgTXV0ZXggbV9vdXRnb2luZ01lc3NhZ2VzTG9jazsK
ICAgICBWZWN0b3I8T3V0Z29pbmdNZXNzYWdlPiBtX291dGdvaW5nTWVzc2FnZXM7CiAgICAgCmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94
eS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5j
cHAKaW5kZXggOGIzMzJiYmQyNGVmOGMzZjNjOGJjYWM2NTdjYTBmZjk4OTc3OTVkZS4uODdlMzYw
Y2I1ODYzMTcxZTAxYTkyMzVkYWY4ZGI5NjIwMjM3MDE3YSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9V
SVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1dlYktpdDIv
VUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNTYsNiArNTYs
OSBAQCB2b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpwYWludChjb25zdCBJbnRS
ZWN0JiByZWN0LCBQbGF0Zm9ybURyYXdpbmdDbwogICAgICAgICBpZiAoIXBhZ2UtPmlzVmFsaWQo
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCisgICAgICAgIGlmIChwYWdlLT5wcm9j
ZXNzKCktPmlzTGF1bmNoaW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgc3Rk
OjphdXRvX3B0cjxDb3JlSVBDOjpBcmd1bWVudERlY29kZXI+IGFyZ3VtZW50cyA9IHBhZ2UtPnBy
b2Nlc3MoKS0+Y29ubmVjdGlvbigpLT53YWl0Rm9yKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpE
aWRTZXRTaXplLCBwYWdlLT5wYWdlSUQoKSwgMC4wNCk7CiAgICAgICAgIGlmIChhcmd1bWVudHMu
Z2V0KCkpCiAgICAgICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZShwYWdlLT5wcm9jZXNzKCktPmNv
bm5lY3Rpb24oKSwgQ29yZUlQQzo6TWVzc2FnZUlEKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpE
aWRTZXRTaXplKSwgKmFyZ3VtZW50cy5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9XZWJQcm9jZXNzTGF1bmNoZXIuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5jcHAKc2ltaWxhcml0eSBpbmRleCA1OSUKY29weSBmcm9t
IFdlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oCmNvcHkgdG8g
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmNwcAppbmRleCA2ZDRk
N2ZlMDJhMmJmNjcxNjM0MzhmMjkxM2E1M2YyMjkxOTNjZDRkLi5hYmJiYjQ2NjAxODc5NjJiNWVj
MjEzMmQxNWE4NzlkNGFmZTQ3YmI1IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci9XZWJQcm9jZXNzTGF1bmNoZXIuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuY3BwCkBAIC0yMywyMiArMjMsNDQgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlByb2Nlc3NMYXVuY2hlcl9o
Ci0jZGVmaW5lIFdlYlByb2Nlc3NMYXVuY2hlcl9oCisjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVy
LmgiCiAKLSNpbmNsdWRlICJDb25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdHJ1Y3QgUHJvY2Vzc0luZm8gewotICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9u
PiBjb25uZWN0aW9uOwotICAgIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50
aWZpZXI7Ci19Oworc3RhdGljIFdvcmtRdWV1ZSYgcHJvY2Vzc0xhdW5jaGVyV29ya1F1ZXVlKCkK
K3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdvcmtRdWV1ZSwgcHJvY2Vzc0xhdW5jaGVyV29y
a1F1ZXVlLCAoImNvbS5hcHBsZS5XZWJLaXQuUHJvY2Vzc0xhdW5jaGVyIikpOworICAgIHJldHVy
biBwcm9jZXNzTGF1bmNoZXJXb3JrUXVldWU7Cit9CiAKLVByb2Nlc3NJbmZvIGxhdW5jaFdlYlBy
b2Nlc3MoQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50KiwgYm9vbCB1c2VUaHJlYWQpOworUHJv
Y2Vzc0xhdW5jaGVyOjpQcm9jZXNzTGF1bmNoZXIoQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2Ns
aWVudChjbGllbnQpCisgICAgLCBtX3Byb2Nlc3NJZGVudGlmaWVyKDApCit7CisgICAgLy8gTGF1
bmNoIHRoZSBwcm9jZXNzLgorICAgIG1faXNMYXVuY2hpbmcgPSB0cnVlOworICAgIHByb2Nlc3NM
YXVuY2hlcldvcmtRdWV1ZSgpLnNjaGVkdWxlV29yayhXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsICZQ
cm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpKTsKK30KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cit2b2lkIFByb2Nlc3NMYXVuY2hlcjo6ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcyhQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBDb3JlSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9
IHByb2Nlc3NJZGVudGlmaWVyOworICAgIG1faXNMYXVuY2hpbmcgPSBmYWxzZTsKKyAgICAKKyAg
ICBpZiAoIW1fY2xpZW50KSB7CisgICAgICAgIC8vIEZJWE1FOiBEaXNwb3NlIG9mIHRoZSBjb25u
ZWN0aW9uIGlkZW50aWZpZXIuCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9j
bGllbnQtPmRpZEZpbmlzaExhdW5jaGluZyh0aGlzLCBpZGVudGlmaWVyKTsKK30KKwordm9pZCBQ
cm9jZXNzTGF1bmNoZXI6OmludmFsaWRhdGUoKQoreworICAgIG1fY2xpZW50ID0gMDsKK30KIAot
I2VuZGlmIC8vIFdlYlByb2Nlc3NMYXVuY2hlcl9oCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1dlYlByb2Nlc3NMYXVuY2hlci5o
IGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKc2ltaWxhcml0
eSBpbmRleCA2MiUKcmVuYW1lIGZyb20gV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvV2ViUHJv
Y2Vzc0xhdW5jaGVyLmgKcmVuYW1lIHRvIFdlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nl
c3NMYXVuY2hlci5oCmluZGV4IDZkNGQ3ZmUwMmEyYmY2NzE2MzQzOGYyOTEzYTUzZjIyOTE5M2Nk
NGQuLmU0NGQ2M2JlN2UwOGVmMWRjYTAzOGExMDYwZDBkMDM2Yzg5NTZlNGUgMTAwNjQ0Ci0tLSBh
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1dlYlByb2Nlc3NMYXVuY2hlci5oCisrKyBiL1dl
YktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCkBAIC0yOSwxNSArMjks
NDMgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Qcm9jZXNz
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgUHJvY2Vzc0luZm8gewot
ICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uOwotICAgIFBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXI7Ci19OworY2xhc3MgUHJvY2Vzc0xh
dW5jaGVyIDogcHVibGljIFRocmVhZFNhZmVTaGFyZWQ8UHJvY2Vzc0xhdW5jaGVyPiB7CitwdWJs
aWM6CisgICAgY2xhc3MgQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfkNs
aWVudCgpIHsgfQorICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5j
aGluZyhQcm9jZXNzTGF1bmNoZXIqLCBjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyJikgPSAwOworICAgIH07CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvY2Vzc0xh
dW5jaGVyPiBjcmVhdGUoQ2xpZW50KiBjbGllbnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFByb2Nlc3NMYXVuY2hlcihjbGllbnQpKTsKKyAgICB9CisKKyAgICBib29sIGlz
TGF1bmNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0xhdW5jaGluZzsgfQorICAgIFBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3By
b2Nlc3NJZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKKyAgICB2
b2lkIGludmFsaWRhdGUoKTsKKworICAgIHN0YXRpYyBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVu
dGlmaWVyIGNyZWF0ZVdlYlRocmVhZCgpOwogCi1Qcm9jZXNzSW5mbyBsYXVuY2hXZWJQcm9jZXNz
KENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCosIGJvb2wgdXNlVGhyZWFkKTsKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgUHJvY2Vzc0xhdW5jaGVyKENsaWVudCopOworCisgICAgdm9pZCBsYXVu
Y2hQcm9jZXNzKCk7CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzKFBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOworCisg
ICAgQ2xpZW50KiBtX2NsaWVudDsKKworICAgIGJvb2wgbV9pc0xhdW5jaGluZzsKKyAgICBQbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyIG1fcHJvY2Vzc0lkZW50aWZpZXI7Cit9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
bWFjL1dlYlByb2Nlc3NMYXVuY2hlci5tbSBiL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0Kc2ltaWxhcml0eSBpbmRleCA1OCUKcmVuYW1lIGZyb20g
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1dlYlByb2Nlc3NMYXVuY2hlci5tbQpyZW5h
bWUgdG8gV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1hYy5t
bQppbmRleCBlMzYyZmZhNWVmYjZiZjhiZGZhMTQ0ZjJiMDE5NDE5MzhmYWEwNDdjLi5kODU0MmIz
ZmJhN2QxN2RiYmFiMmY3NGY5N2U1MWE2MGFlYjA1MTNiIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXVuY2hlci9tYWMvV2ViUHJvY2Vzc0xhdW5jaGVyLm1tCisrKyBiL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KQEAgLTIzLDExICsy
MywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNs
dWRlICJXZWJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIuaCIK
IAogI2luY2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCisKICNpbmNsdWRlIDxjcnRfZXh0ZXJucy5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPHNlcnZlcnMv
Ym9vdHN0cmFwLmg+CkBAIC00MCw2ICs0MSw0NCBAQCBleHRlcm4gIkMiIGtlcm5fcmV0dXJuX3Qg
Ym9vdHN0cmFwX3JlZ2lzdGVyMihtYWNoX3BvcnRfdCwgbmFtZV90LCBtYWNoX3BvcnRfdCwgdQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQoreworICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCisgICAgbWFjaF9wb3J0
X3QgbGlzdGVuaW5nUG9ydDsKKyAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90YXNrX3NlbGYo
KSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKKyAgICAKKyAgICAv
LyBJbnNlcnQgYSBzZW5kIHJpZ2h0IHNvIHdlIGNhbiBzZW5kIHRvIGl0LgorICAgIG1hY2hfcG9y
dF9pbnNlcnRfcmlnaHQobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwgbGlzdGVuaW5n
UG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOworICAgIAorICAgIE5TU3RyaW5nICp3ZWJQ
cm9jZXNzQXBwUGF0aCA9IFtbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBw
bGUuV2ViS2l0MiJdIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRhYmxlOkAiV2ViUHJvY2Vzcy5hcHAi
XTsKKyAgICBOU1N0cmluZyAqd2ViUHJvY2Vzc0FwcEV4ZWN1dGFibGVQYXRoID0gW1tOU0J1bmRs
ZSBidW5kbGVXaXRoUGF0aDp3ZWJQcm9jZXNzQXBwUGF0aF0gZXhlY3V0YWJsZVBhdGhdOworCisg
ICAgY29uc3QgY2hhciogcGF0aCA9IFt3ZWJQcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uXTsKKyAgICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IHBhdGgsIDAg
fTsKKworICAgIC8vIFJlZ2lzdGVyIG91cnNlbHZlcy4KKyAgICBrZXJuX3JldHVybl90IGtyID0g
Ym9vdHN0cmFwX3JlZ2lzdGVyMihib290c3RyYXBfcG9ydCwgKGNoYXIqKSJjb20uYXBwbGUuV2Vi
S2l0LldlYlByb2Nlc3MiLCBsaXN0ZW5pbmdQb3J0LCAvKiBCT09UU1RSQVBfUEVSX1BJRF9TRVJW
SUNFICovIDEpOworICAgIGlmIChrcikKKyAgICAgICAgTlNMb2coQCJib290c3RyYXBfcmVnaXN0
ZXIyIHJlc3VsdDogJXgiLCBrcik7CisgICAgCisgICAgcGlkX3QgcHJvY2Vzc0lkZW50aWZpZXI7
CisgICAgaW50IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZwcm9jZXNzSWRlbnRpZmllciwgcGF0aCwg
MCwgMCwgKGNoYXIgKmNvbnN0KilhcmdzLCAqX05TR2V0RW52aXJvbigpKTsKKyAgICBpZiAocmVz
dWx0KQorICAgICAgICBOU0xvZyhAInBvc2l4X3NwYXduIHJlc3VsdDogJWQiLCByZXN1bHQpOwor
CisgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJh
Y2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCisgICAgUnVuTG9vcDo6bWFpbigpLT5zY2hlZHVsZVdv
cmsoV29ya0l0ZW06OmNyZWF0ZSh0aGlzLCAmUHJvY2Vzc0xhdW5jaGVyOjpkaWRGaW5pc2hMYXVu
Y2hpbmdQcm9jZXNzLCBwcm9jZXNzSWRlbnRpZmllciwgbGlzdGVuaW5nUG9ydCkpOworfQorCit2
b2lkIFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCit7ICAgIAorICAgIGlmICgh
bV9wcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGtpbGwobV9w
cm9jZXNzSWRlbnRpZmllciwgU0lHS0lMTCk7Cit9CisKKwogc3RhdGljIHZvaWQqIHdlYlRocmVh
ZEJvZHkodm9pZCogY29udGV4dCkKIHsKICAgICBtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0ID0gc3Rh
dGljX2Nhc3Q8bWFjaF9wb3J0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0
KSk7CkBAIC01OSw0NCArOTgsMjEgQEAgc3RhdGljIHZvaWQqIHdlYlRocmVhZEJvZHkodm9pZCog
Y29udGV4dCkKICAgICByZXR1cm4gMDsKIH0KIAotUHJvY2Vzc0luZm8gbGF1bmNoV2ViUHJvY2Vz
cyhDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCwgYm9vbCB1c2VUaHJlYWQpCitD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIFByb2Nlc3NMYXVuY2hlcjo6Y3JlYXRlV2Vi
VGhyZWFkKCkKIHsKLSAgICBQcm9jZXNzSW5mbyBpbmZvID0geyAwLCAwIH07Ci0KLSAgICAvLyBD
cmVhdGUgdGhlIGxpc3RlbmluZyBwb3J0LgotICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1BvcnQ7
Ci0gICAgbWFjaF9wb3J0X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdI
VF9SRUNFSVZFLCAmbGlzdGVuaW5nUG9ydCk7Ci0gICAgCi0gICAgLy8gSW5zZXJ0IGEgc2VuZCBy
aWdodCBzbyB3ZSBjYW4gc2VuZCB0byBpdC4KLSAgICBtYWNoX3BvcnRfaW5zZXJ0X3JpZ2h0KG1h
Y2hfdGFza19zZWxmKCksIGxpc3RlbmluZ1BvcnQsIGxpc3RlbmluZ1BvcnQsIE1BQ0hfTVNHX1RZ
UEVfTUFLRV9TRU5EKTsKLQotICAgIGluZm8uY29ubmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rp
b246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24obGlzdGVuaW5nUG9ydCwgY2xpZW50LCBSdW5Mb29w
OjptYWluKCkpOwotICAgIGluZm8uY29ubmVjdGlvbi0+b3BlbigpOwotCi0gICAgaWYgKHVzZVRo
cmVhZCkgewotICAgICAgICAvLyBQYXNzIGl0IHRvIHRoZSB0aHJlYWQuCi0gICAgICAgIGlmICgh
Y3JlYXRlVGhyZWFkKHdlYlRocmVhZEJvZHksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGxpc3Rl
bmluZ1BvcnQpLCAiV2ViS2l0MjogV2ViVGhyZWFkIikpIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBEZXN0cm95IHBvcnRzLgotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAg
ICB9IGVsc2UgewotICAgICAgICBOU1N0cmluZyAqd2ViUHJvY2Vzc0FwcFBhdGggPSBbW05TQnVu
ZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdDIiXSBwYXRoRm9yQXV4
aWxpYXJ5RXhlY3V0YWJsZTpAIldlYlByb2Nlc3MuYXBwIl07Ci0gICAgICAgIE5TU3RyaW5nICp3
ZWJQcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhQYXRoOndl
YlByb2Nlc3NBcHBQYXRoXSBleGVjdXRhYmxlUGF0aF07Ci0KLSAgICAgICAgY29uc3QgY2hhciog
cGF0aCA9IFt3ZWJQcm9jZXNzQXBwRXhlY3V0YWJsZVBhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uXTsKLSAgICAgICAgY29uc3QgY2hhciogYXJnc1tdID0geyBwYXRoLCAwIH07Ci0KLSAgICAg
ICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgotICAgICAgICBrZXJuX3JldHVybl90IGtyID0gYm9v
dHN0cmFwX3JlZ2lzdGVyMihib290c3RyYXBfcG9ydCwgKGNoYXIqKSJjb20uYXBwbGUuV2ViS2l0
LldlYlByb2Nlc3MiLCBsaXN0ZW5pbmdQb3J0LCAvKiBCT09UU1RSQVBfUEVSX1BJRF9TRVJWSUNF
ICovIDEpOwotICAgICAgICBpZiAoa3IpCi0gICAgICAgICAgICBOU0xvZyhAImJvb3RzdHJhcF9y
ZWdpc3RlcjIgcmVzdWx0OiAleCIsIGtyKTsKLSAgICAgICAgCi0gICAgICAgIGludCByZXN1bHQg
PSBwb3NpeF9zcGF3bigmaW5mby5wcm9jZXNzSWRlbnRpZmllciwgcGF0aCwgMCwgMCwgKGNoYXIg
KmNvbnN0KilhcmdzLCAqX05TR2V0RW52aXJvbigpKTsKLSAgICAgICAgaWYgKHJlc3VsdCkKLSAg
ICAgICAgICAgIE5TTG9nKEAicG9zaXhfc3Bhd24gcmVzdWx0OiAlZCIsIHJlc3VsdCk7CisgICAg
Ly8gQ3JlYXRlIHRoZSBzZXJ2aWNlIHBvcnQuCisgICAgIG1hY2hfcG9ydF90IGxpc3RlbmluZ1Bv
cnQ7CisgICAgIG1hY2hfcG9ydF9hbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCBNQUNIX1BPUlRf
UklHSFRfUkVDRUlWRSwgJmxpc3RlbmluZ1BvcnQpOworICAgICAKKyAgICAgLy8gSW5zZXJ0IGEg
c2VuZCByaWdodCBzbyB3ZSBjYW4gc2VuZCB0byBpdC4KKyAgICAgbWFjaF9wb3J0X2luc2VydF9y
aWdodChtYWNoX3Rhc2tfc2VsZigpLCBsaXN0ZW5pbmdQb3J0LCBsaXN0ZW5pbmdQb3J0LCBNQUNI
X01TR19UWVBFX01BS0VfU0VORCk7CisKKyAgICBpZiAoIWNyZWF0ZVRocmVhZCh3ZWJUaHJlYWRC
b2R5LCByZWludGVycHJldF9jYXN0PHZvaWQqPihsaXN0ZW5pbmdQb3J0KSwgIldlYktpdDI6IFdl
YlRocmVhZCIpKSB7CisgICAgICAgIG1hY2hfcG9ydF9kZXN0cm95KG1hY2hfdGFza19zZWxmKCks
IGxpc3RlbmluZ1BvcnQpOworICAgICAgICByZXR1cm4gTUFDSF9QT1JUX05VTEw7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGluZm87CisgICAgcmV0dXJuIGxpc3RlbmluZ1BvcnQ7CiB9Ci0KKyAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvd2luL1dlYlByb2Nlc3NMYXVuY2hlci5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVu
Y2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcApzaW1pbGFyaXR5IGluZGV4IDUxJQpyZW5h
bWUgZnJvbSBXZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vV2ViUHJvY2Vzc0xhdW5jaGVy
LmNwcApyZW5hbWUgdG8gV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVu
Y2hlcldpbi5jcHAKaW5kZXggMjg4ZjdjM2EzMjViMDExOWY0MTgyOGJjOGRkYWZiN2I1NDg2Njdi
Yi4uZTg4MGQ3ZGU1YzNlM2U0MjI0MzAxMGM4YTA5ODk3NTMyM2EzYTI2NyAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1dlYlByb2Nlc3NMYXVuY2hlci5jcHAKKysr
IGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAK
QEAgLTIzLDIxICsyMyw3NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpbmNsdWRlICJXZWJQcm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSdW5Mb29w
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1T
dHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KLSNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAordm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQoreworICAgIC8v
IEZpcnN0LCBjcmVhdGUgdGhlIHNlcnZlciBhbmQgY2xpZW50IGlkZW50aWZpZXJzLgorICAgIEhB
TkRMRSBzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyOworICAgIGlmICghQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2VydmVyQW5kQ2xpZW50SWRlbnRpZmllcnMoc2VydmVySWRl
bnRpZmllciwgY2xpZW50SWRlbnRpZmllcikpIHsKKyAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hv
dWxkIHdlIGRvIGhlcmU/CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVyaXRzIHRoZSBjbGllbnQg
aWRlbnRpZmllci4KKyAgICA6OlNldEhhbmRsZUluZm9ybWF0aW9uKGNsaWVudElkZW50aWZpZXIs
IEhBTkRMRV9GTEFHX0lOSEVSSVQsIEhBTkRMRV9GTEFHX0lOSEVSSVQpOworICAgICAgICAKKyAg
ICBWZWN0b3I8VUNoYXI+IGNvbW1hbmRMaW5lVmVjdG9yOworCisgICAgLy8gRklYTUU6IFdlIHdv
dWxkIGxpa2UgdG8gcGFzcyBhIGZ1bGwgcGF0aCB0byB0aGUgLmV4ZSBoZXJlLgorI2lmbmRlZiBE
RUJVR19BTEwKKyAgICBTdHJpbmcgY29tbWFuZExpbmUoTCJXZWJLaXQyV2ViUHJvY2Vzcy5leGUi
KTsKKyNlbHNlCisgICAgU3RyaW5nIGNvbW1hbmRMaW5lKEwiV2ViS2l0MldlYlByb2Nlc3NfZGVi
dWcuZXhlIik7CisjZW5kaWYKKworICAgIGFwcGVuZChjb21tYW5kTGluZVZlY3RvciwgY29tbWFu
ZExpbmUpOworICAgIGFwcGVuZChjb21tYW5kTGluZVZlY3RvciwgIiAtY2xpZW50SWRlbnRpZmll
ciAiKTsKKyAgICBhcHBlbmQoY29tbWFuZExpbmVWZWN0b3IsIFN0cmluZzo6bnVtYmVyKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjbGllbnRJZGVudGlmaWVyKSkpOworICAgIGNvbW1hbmRM
aW5lVmVjdG9yLmFwcGVuZCgnXDAnKTsKKworICAgIFNUQVJUVVBJTkZPIHN0YXJ0dXBJbmZvID0g
eyAwIH07CisgICAgc3RhcnR1cEluZm8uY2IgPSBzaXplb2Yoc3RhcnR1cEluZm8pOworICAgIFBS
T0NFU1NfSU5GT1JNQVRJT04gcHJvY2Vzc0luZm9ybWF0aW9uID0geyAwIH07CisgICAgQk9PTCBy
ZXN1bHQgPSA6OkNyZWF0ZVByb2Nlc3NXKDAsIGNvbW1hbmRMaW5lVmVjdG9yLmRhdGEoKSwgMCwg
MCwgdHJ1ZSwgMCwgMCwgMCwgJnN0YXJ0dXBJbmZvLCAmcHJvY2Vzc0luZm9ybWF0aW9uKTsKKwor
ICAgIC8vIFdlIGNhbiBub3cgY2xvc2UgdGhlIGNsaWVudCBpZGVudGlmaWVyIGhhbmRsZS4KKyAg
ICA6OkNsb3NlSGFuZGxlKGNsaWVudElkZW50aWZpZXIpOworCisgICAgaWYgKCFyZXN1bHQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHdlIGRvIGhlcmU/CisgICAgICAgIERXT1JE
IGVycm9yID0gOjpHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgLy8gRG9uJ3QgbGVhayB0aGUgdGhyZWFkIGhhbmRsZS4KKyAgICA6OkNs
b3NlSGFuZGxlKHByb2Nlc3NJbmZvcm1hdGlvbi5oVGhyZWFkKTsKKworICAgIC8vIFdlJ3ZlIGZp
bmlzaGVkIGxhdW5jaGluZyB0aGUgcHJvY2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBydW4gbG9v
cC4KKyAgICBSdW5Mb29wOjptYWluKCktPnNjaGVkdWxlV29yayhXb3JrSXRlbTo6Y3JlYXRlKHRo
aXMsICZQcm9jZXNzTGF1bmNoZXI6OmRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MsIHByb2Nlc3NJ
ZGVudGlmaWVyKCksIHNlcnZlcklkZW50aWZpZXIpKTsKK30KKwordm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OnRlcm1pbmF0ZVByb2Nlc3MoKQoreworICAgIGlmICghbV9wcm9jZXNzSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgOjpUZXJtaW5hdGVQcm9jZXNzKG1fcHJvY2Vzc0lkZW50
aWZpZXIsIDApOworfQorCiBzdGF0aWMgdm9pZCogd2ViVGhyZWFkQm9keSh2b2lkKiBjb250ZXh0
KQogewogICAgIEhBTkRMRSBjbGllbnRJZGVudGlmaWVyID0gcmVpbnRlcnByZXRfY2FzdDxIQU5E
TEU+KGNvbnRleHQpOwpAQCAtNTIsNyArMTA1LDcgQEAgc3RhdGljIHZvaWQqIHdlYlRocmVhZEJv
ZHkodm9pZCogY29udGV4dCkKICAgICByZXR1cm4gMDsKIH0KIAotUHJvY2Vzc0luZm8gbGF1bmNo
V2ViUHJvY2VzcyhDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCwgYm9vbCB1c2VU
aHJlYWQpCitDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIFByb2Nlc3NMYXVuY2hlcjo6
Y3JlYXRlV2ViVGhyZWFkKCkKIHsKICAgICAvLyBGaXJzdCwgY3JlYXRlIHRoZSBzZXJ2ZXIgYW5k
IGNsaWVudCBpZGVudGlmaWVycy4KICAgICBIQU5ETEUgc2VydmVySWRlbnRpZmllciwgY2xpZW50
SWRlbnRpZmllcjsKQEAgLTYxLDU4ICsxMTQsMTMgQEAgUHJvY2Vzc0luZm8gbGF1bmNoV2ViUHJv
Y2VzcyhDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQqIGNsaWVudCwgYm9vbCB1c2VUaHJlYWQK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgUHJvY2Vzc0luZm8g
aW5mbyA9IHsgMCwgMCB9OwotCi0gICAgaWYgKHVzZVRocmVhZCkgewotICAgICAgICBpZiAoY3Jl
YXRlVGhyZWFkKHdlYlRocmVhZEJvZHksIDAsICJXZWJLaXQyOiBXZWJUaHJlYWQiKSkgewotICAg
ICAgICAgICAgaW5mby5jb25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlU2Vy
dmVyQ29ubmVjdGlvbihzZXJ2ZXJJZGVudGlmaWVyLCBjbGllbnQsIFJ1bkxvb3A6Om1haW4oKSk7
Ci0gICAgICAgICAgICBpbmZvLmNvbm5lY3Rpb24tPm9wZW4oKTsKLSAgICAgICAgICAgIGluZm8u
cHJvY2Vzc0lkZW50aWZpZXIgPSA6OkdldEN1cnJlbnRQcm9jZXNzKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEVuc3VyZSB0
aGF0IHRoZSBjaGlsZCBwcm9jZXNzIGluaGVyaXRzIHRoZSBjbGllbnQgaWRlbnRpZmllci4KLSAg
ICAgICAgOjpTZXRIYW5kbGVJbmZvcm1hdGlvbihjbGllbnRJZGVudGlmaWVyLCBIQU5ETEVfRkxB
R19JTkhFUklULCBIQU5ETEVfRkxBR19JTkhFUklUKTsKLSAgICAgICAgCi0gICAgICAgIFZlY3Rv
cjxVQ2hhcj4gY29tbWFuZExpbmVWZWN0b3I7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdlIHdvdWxk
IGxpa2UgdG8gcGFzcyBhIGZ1bGwgcGF0aCB0byB0aGUgLmV4ZSBoZXJlLgotI2lmbmRlZiBERUJV
R19BTEwKLSAgICAgICAgU3RyaW5nIGNvbW1hbmRMaW5lKEwiV2ViS2l0MldlYlByb2Nlc3MuZXhl
Iik7Ci0jZWxzZQotICAgICAgICBTdHJpbmcgY29tbWFuZExpbmUoTCJXZWJLaXQyV2ViUHJvY2Vz
c19kZWJ1Zy5leGUiKTsKLSNlbmRpZgotCi0gICAgICAgIGFwcGVuZChjb21tYW5kTGluZVZlY3Rv
ciwgY29tbWFuZExpbmUpOwotICAgICAgICBhcHBlbmQoY29tbWFuZExpbmVWZWN0b3IsICIgLWNs
aWVudElkZW50aWZpZXIgIik7Ci0gICAgICAgIGFwcGVuZChjb21tYW5kTGluZVZlY3RvciwgU3Ry
aW5nOjpudW1iZXIocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNsaWVudElkZW50aWZpZXIp
KSk7Ci0gICAgICAgIGNvbW1hbmRMaW5lVmVjdG9yLmFwcGVuZCgnXDAnKTsKLQotICAgICAgICBT
VEFSVFVQSU5GTyBzdGFydHVwSW5mbyA9IHsgMCB9OwotICAgICAgICBzdGFydHVwSW5mby5jYiA9
IHNpemVvZihzdGFydHVwSW5mbyk7Ci0gICAgICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcHJvY2Vz
c0luZm9ybWF0aW9uID0geyAwIH07Ci0gICAgICAgIEJPT0wgcmVzdWx0ID0gOjpDcmVhdGVQcm9j
ZXNzVygwLCBjb21tYW5kTGluZVZlY3Rvci5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCB0cnVlLCAwLCAwLCAwLCAmc3RhcnR1cEluZm8sICZwcm9j
ZXNzSW5mb3JtYXRpb24pOwotCi0gICAgICAgIC8vIFdlIGNhbiBub3cgY2xvc2UgdGhlIGNsaWVu
dCBpZGVudGlmaWVyIGhhbmRsZS4KKyAgICBpZiAoIWNyZWF0ZVRocmVhZCh3ZWJUaHJlYWRCb2R5
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihjbGllbnRJZGVudGlmaWVyKSwgIldlYktpdDI6IFdl
YlRocmVhZCIpKSB7CisgICAgICAgIDo6Q2xvc2VIYW5kbGUoc2VydmVySWRlbnRpZmllcik7CiAg
ICAgICAgIDo6Q2xvc2VIYW5kbGUoY2xpZW50SWRlbnRpZmllcik7Ci0KLSAgICAgICAgaWYgKCFy
ZXN1bHQpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB3ZSBkbyBoZXJlPwot
ICAgICAgICAgICAgRFdPUkQgZXJyb3IgPSA6OkdldExhc3RFcnJvcigpOwotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbmZvLmNvbm5lY3Rp
b24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVTZXJ2ZXJDb25uZWN0aW9uKHNlcnZlcklk
ZW50aWZpZXIsIGNsaWVudCwgUnVuTG9vcDo6bWFpbigpKTsKLSAgICAgICAgaW5mby5jb25uZWN0
aW9uLT5vcGVuKCk7Ci0KLSAgICAgICAgLy8gRG9uJ3QgbGVhayB0aGUgdGhyZWFkIGhhbmRsZS4K
LSAgICAgICAgOjpDbG9zZUhhbmRsZShwcm9jZXNzSW5mb3JtYXRpb24uaFRocmVhZCk7Ci0KLSAg
ICAgICAgaW5mby5wcm9jZXNzSWRlbnRpZmllciA9IHByb2Nlc3NJbmZvcm1hdGlvbi5oUHJvY2Vz
czsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGluZm87CisgICAgcmV0
dXJuIHNlcnZlcklkZW50aWZpZXI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDU0ZmQ1YzJlMGIwYmM4NDFjMDJhMjBj
YWFjNjBjZmJkNmY4OWRjNi4uMzJhOWM4ODVhNGYxNjA3ZmJmMmZjYWU4MDUwMmRkY2M5MzdjZTM1
OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yNiwxMCArMjYsMTAg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIlBsdWdpbkluZm9T
dG9yZS5oIgorI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHQuaCIKICNpbmNsdWRlICJXZWJQYWdlTmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc01hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmgiCkBAIC02NSwzMyArNjUsNDQgQEAg
V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCogY29udGV4dCkKIFdl
YlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiB7CiAgICAgQVNTRVJUKCFtX2Nvbm5l
Y3Rpb24pOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wZW5kaW5nTWVzc2Fn
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzW2ldLmRlc3Ryb3koKTsK
KworICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hlcikgeworICAgICAgICBtX3Byb2Nlc3NMYXVuY2hl
ci0+aW52YWxpZGF0ZSgpOworICAgICAgICBtX3Byb2Nlc3NMYXVuY2hlciA9IDA7CisgICAgfQog
fQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Y29ubmVjdCgpCiB7Ci0gICAgUHJvY2Vzc0luZm8g
aW5mbyA9IGxhdW5jaFdlYlByb2Nlc3ModGhpcywgbV9jb250ZXh0LT5wcm9jZXNzTW9kZWwoKSA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlUaHJlYWQpOwotICAgIGlmICghaW5mby5jb25u
ZWN0aW9uKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZXBvcnQgYW4gZXJyb3IuCi0gICAgICAgIEFT
U0VSVChmYWxzZSk7CisgICAgaWYgKG1fY29udGV4dC0+cHJvY2Vzc01vZGVsKCkgPT0gUHJvY2Vz
c01vZGVsU2hhcmVkU2Vjb25kYXJ5VGhyZWFkKSB7CisgICAgICAgIENvcmVJUEM6OkNvbm5lY3Rp
b246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBQcm9jZXNzTGF1bmNoZXI6OmNy
ZWF0ZVdlYlRocmVhZCgpOworICAgICAgICBkaWRGaW5pc2hMYXVuY2hpbmcoMCwgY29ubmVjdGlv
bklkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9u
ID0gaW5mby5jb25uZWN0aW9uOwotICAgIG1fcGxhdGZvcm1Qcm9jZXNzSWRlbnRpZmllciA9IGlu
Zm8ucHJvY2Vzc0lkZW50aWZpZXI7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3NMYXVuY2hlcik7Cisg
ICAgbV9wcm9jZXNzTGF1bmNoZXIgPSBQcm9jZXNzTGF1bmNoZXI6OmNyZWF0ZSh0aGlzKTsKIH0K
IAogYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIHN0ZDo6YXV0b19wdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiBhcmd1bWVu
dHMpCiB7CisgICAgLy8gSWYgd2UncmUgd2FpdGluZyBmb3IgdGhlIHdlYiBwcm9jZXNzIHRvIGxh
dW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdlcyBzbyB3ZSBjYW4gc2VuZCB0
aGVtIG9uY2Ugd2UgaGF2ZQorICAgIC8vIGEgQ29yZUlQQyBjb25uZWN0aW9uLgorICAgIGlmIChp
c0xhdW5jaGluZygpKSB7CisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChDb3JlSVBD
OjpDb25uZWN0aW9uOjpPdXRnb2luZ01lc3NhZ2UobWVzc2FnZUlELCBhcmd1bWVudHMpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIHJldHVybiBtX2Nvbm5lY3Rpb24t
PnNlbmRNZXNzYWdlKG1lc3NhZ2VJRCwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnRlcm1pbmF0ZSgpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIGtpbGwobV9wbGF0
Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCBTSUdLSUxMKTsKLSNlbGlmIFBMQVRGT1JNKFdJTikKLSAg
ICA6OlRlcm1pbmF0ZVByb2Nlc3MobV9wbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLCAwKTsKLSNl
bmRpZgorICAgIGlmIChtX3Byb2Nlc3NMYXVuY2hlcikKKyAgICAgICAgbV9wcm9jZXNzTGF1bmNo
ZXItPnRlcm1pbmF0ZVByb2Nlc3MoKTsKIH0KIAogV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdApAQCAtMjQzLDQgKzI1NCwxOSBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lUmVzcG9uc2l2ZShSZXNwb25zaXZlbmVzc1Rp
bWVyKikKICAgICAgICAgcGFnZXNbaV0tPnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCk7CiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiwgY29uc3QgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciYgY29ubmVjdGlvbklk
ZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb24pOworICAgIAorICAgIG1fY29u
bmVjdGlvbiA9IENvcmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZVNlcnZlckNvbm5lY3Rpb24oY29u
bmVjdGlvbklkZW50aWZpZXIsIHRoaXMsIFJ1bkxvb3A6Om1haW4oKSk7CisgICAgbV9jb25uZWN0
aW9uLT5vcGVuKCk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3BlbmRpbmdN
ZXNzYWdlcy5zaXplKCk7ICsraSkgeworICAgICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpPdXRn
b2luZ01lc3NhZ2UmIG91dGdvaW5nTWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2VzW2ldOworICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKG91dGdvaW5nTWVzc2FnZS5tZXNzYWdlSUQo
KSwgc3RkOjphdXRvX3B0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+KG91dGdvaW5nTWVzc2Fn
ZS5hcmd1bWVudHMoKSkpOworICAgIH0KKworICAgIG1fcGVuZGluZ01lc3NhZ2VzLmNsZWFyKCk7
ICAgIAorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKaW5kZXggM2YxYjRjZTAyNzEwMGM3MjYwZjQyNGExNmJhY2U4OTFlMWEwNDIxMy4uYmE3
OGE0M2E5MThlYzE0ZjY0YTc5N2RmZjJmMjcwNGY4OWVlNWUxYiAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiUHJv
Y2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc01vZGVsLmgiCiAjaW5jbHVkZSAiUmVz
cG9uc2l2ZW5lc3NUaW1lci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtNDMsOCAr
NDQsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29udGV4dDsKIGNsYXNzIFdl
YlBhZ2VOYW1lc3BhY2U7Ci0KLWNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCwgUmVzcG9u
c2l2ZW5lc3NUaW1lcjo6Q2xpZW50IHsKKyAgICAKK2NsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNs
aWVudCwgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBQcm9jZXNzTGF1bmNoZXI6OkNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFn
ZVByb3h5PiA+IFdlYlBhZ2VQcm94eU1hcDsKICAgICB0eXBlZGVmIFdlYlBhZ2VQcm94eU1hcDo6
Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBwYWdlc19jb25zdF9pdGVyYXRvcjsKQEAgLTYzLDYgKzY0
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOyAKICAgICB9
CiAKKyAgICBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCk7IH0KKwog
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwogICAgIFdl
YlBhZ2VQcm94eSogY3JlYXRlV2ViUGFnZShXZWJQYWdlTmFtZXNwYWNlKik7CiAgICAgdm9pZCBh
ZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKQEAgLTc1
LDggKzc4LDcgQEAgcHVibGljOgogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJlc3BvbnNpdmVu
ZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CiAKICAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KLQotICAgIFBsYXRmb3Jt
UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXI7IH0KKyAgICBib29sIGlzTGF1bmNoaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXIgJiYgbV9wcm9jZXNzTGF1bmNoZXItPmlzTGF1bmNo
aW5nKCk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNzUHJveHkoV2ViQ29u
dGV4dCopOwpAQCAtOTYsOSArOTgsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEJlY29tZVVu
cmVzcG9uc2l2ZShSZXNwb25zaXZlbmVzc1RpbWVyKik7CiAgICAgdm9pZCBkaWRCZWNvbWVSZXNw
b25zaXZlKFJlc3BvbnNpdmVuZXNzVGltZXIqKTsKIAorICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6
Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqLCBjb25zdCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyJik7CisKICAgICBSZXNw
b25zaXZlbmVzc1RpbWVyIG1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsKICAgICBSZWZQdHI8Q29yZUlQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwotICAgIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZp
ZXIgbV9wbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyOworCisgICAgVmVjdG9yPENvcmVJUEM6OkNv
bm5lY3Rpb246Ok91dGdvaW5nTWVzc2FnZT4gbV9wZW5kaW5nTWVzc2FnZXM7CisgICAgUmVmUHRy
PFByb2Nlc3NMYXVuY2hlcj4gbV9wcm9jZXNzTGF1bmNoZXI7CiAKICAgICBXZWJDb250ZXh0KiBt
X2NvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggM2RmNDI4ZWI4OWUwMjMzNTEwMzZkMjhkNWFlZjNjZWNjNDEyZjM0MS4uNDM3YjI5YzAxOGYz
NTIxYmU0MjI4ZTg3OTVlMGFjNjA3MjcwNWQ1NCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM3LDYgKzM3LDcgQEAKIAkJMUFBMUNDNUQxMDBGQTFBMTAw
NzhERUJDIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMUNDNUMxMDBGQTFBMTAwNzhERUJDIC8qIFF1YXJ0
ekNvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxQUExQ0QwNzEwMEZBMUJBMDA3OERFQkMgLyogQ2Fy
Ym9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQTFDRDA2MTAwRkExQkEwMDc4REVCQyAvKiBDYXJib24uZnJhbWV3b3JrICovOyB9
OwogCQkxQUFERTZGRjEwRDg1NUZDMDBEM0Q2M0QgLyogQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUFERTZGRTEwRDg1NUZDMDBEM0Q2M0QgLyogQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsg
Ki87IH07CisJCTFBRTExN0Y2MTFEQkIzMDkwMDk4MTYxNSAvKiBQcm9jZXNzTGF1bmNoZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMTE3RjUx
MURCQjMwOTAwOTgxNjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgKi87IH07CiAJCTFBRUZDQzEy
MTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZDQzEwMTFEMDFGOTYwMDgyMTlEMyAvKiBQ
bHVnaW5JbmZvU3RvcmUuaCAqLzsgfTsKIAkJMUFFRkNDMTMxMUQwMUY5NjAwODIxOUQzIC8qIFBs
dWdpbkluZm9TdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUVGQ0MxMTExRDAxRjk2MDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlLmNwcCAq
LzsgfTsKIAkJMUFFRkNDQkQxMUQwMkM1RTAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZU1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRUZDQ0JD
MTFEMDJDNUUwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmVNYWMubW0gKi87IH07CkBAIC04Nyw3
ICs4OCw3IEBACiAJCUJDMTExQjBGMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCMEIx
MTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgKi87IH07CiAJCUJDMTExQjEwMTEy
RjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzExMUIwQzExMkY1RTRGMDAzMzdCQUIgLyog
V2ViUHJvY2Vzc01hbmFnZXIuY3BwICovOyB9OwogCQlCQzExMUIxMTExMkY1RTRGMDAzMzdCQUIg
LyogV2ViUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMTExQjBEMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJveHku
Y3BwICovOyB9OwotCQlCQzExMUIxRDExMkY1RkU2MDAzMzdCQUIgLyogV2ViUHJvY2Vzc0xhdW5j
aGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMx
MTFCMUIxMTJGNUZFNjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NMYXVuY2hlci5tbSAqLzsgfTsKKwkJ
QkMxMTFCMUQxMTJGNUZFNjAwMzM3QkFCIC8qIFByb2Nlc3NMYXVuY2hlck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTExQjFCMTEyRjVGRTYw
MDMzN0JBQiAvKiBQcm9jZXNzTGF1bmNoZXJNYWMubW0gKi87IH07CiAJCUJDMTExQjUwMTEyRjYx
OTIwMDMzN0JBQiAvKiBQYWdlQ2xpZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCNEIxMTJGNjE5MjAwMzM3QkFCIC8qIFBhZ2VDbGll
bnRJbXBsLmggKi87IH07CiAJCUJDMTExQjUxMTEyRjYxOTIwMDMzN0JBQiAvKiBQYWdlQ2xpZW50
SW1wbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MTExQjRDMTEyRjYxOTIwMDMzN0JBQiAvKiBQYWdlQ2xpZW50SW1wbC5tbSAqLzsgfTsKIAkJQkMx
MTFCNUQxMTJGNjI5ODAwMzM3QkFCIC8qIFdlYkV2ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMTFCNUIxMTJGNjI5ODAwMzM3QkFC
IC8qIFdlYkV2ZW50RmFjdG9yeS5oICovOyB9OwpAQCAtOTgsNyArOTksNyBAQAogCQlCQzEzMUJD
OTExNzI2QzI4MDBCNjk3MjcgLyogQ29yZUlQQ01lc3NhZ2VLaW5kcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMzFCQzgxMTcyNkMyODAwQjY5NzI3
IC8qIENvcmVJUENNZXNzYWdlS2luZHMuaCAqLzsgfTsKIAkJQkMxNzc0NjUxMThCOUZGNDAwN0Q5
RTlBIC8qIFdLUGFnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMTc3NDY0MTE4QjlGRjQwMDdEOUU5QSAvKiBXS1BhZ2VQcml2YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxNzc1
M0YxMThCQUJGMDAwN0Q5RTlBIC8qIEdlbmVyaWNDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxNzc1M0UxMThCQUJGMDAwN0Q5RTlBIC8q
IEdlbmVyaWNDYWxsYmFjay5oICovOyB9OwotCQlCQzFBN0M1ODExMzZFMTlDMDBGQjcxNjcgLyog
V2ViUHJvY2Vzc0xhdW5jaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJvY2Vzc0xhdW5jaGVy
LmggKi87IH07CisJCUJDMUE3QzU4MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUE3QzU3
MTEzNkUxOUMwMEZCNzE2NyAvKiBQcm9jZXNzTGF1bmNoZXIuaCAqLzsgfTsKIAkJQkMxQjQxOTgx
MUQ0MUQ1NzAwMTFFOEREIC8qIFdLQnVuZGxlUGFnZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMUI0MTk3MTFENDFENTcwMDExRThERCAv
KiBXS0J1bmRsZVBhZ2VQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1
bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMxREQ3QjExMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oICov
OyB9OwogCQlCQzIwNEVFMjExQzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyMDRFRTAxMUM4
M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTI2NSw2ICsyNjYs
NyBAQAogCQkxQUExQ0M1QzEwMEZBMUExMDA3OERFQkMgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVy
LmZyYW1ld29yazsgbmFtZSA9IFF1YXJ0ekNvcmUuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CiAJCTFBQTFDRDA2MTAwRkExQkEwMDc4REVCQyAvKiBDYXJib24uZnJhbWV3
b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3Jh
cHBlci5mcmFtZXdvcms7IG5hbWUgPSBDYXJib24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKIAkJMUFBREU2RkUxMEQ4NTVGQzAwRDNENjNEIC8qIEFwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNl
cy5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkxQUUxMTdGNTExREJCMzA5
MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBRUZDQzEwMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSW5mb1N0b3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBRUZDQzExMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5J
bmZvU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2lu
SW5mb1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFFRkNDQkMxMUQw
MkM1RTAwODIxOUQzIC8qIFBsdWdpbkluZm9TdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkluZm9TdG9yZU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMxNyw3ICszMTksNyBAQAogCQlCQzExMUIwQjExMkY1RTRGMDAz
MzdCQUIgLyogV2ViUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MTExQjBDMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQcm9jZXNzTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMTExQjBEMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQ
cm9jZXNzUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UHJvY2Vzc1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMxMTFCMUIx
MTJGNUZFNjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NMYXVuY2hlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByb2Nlc3NMYXVuY2hlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMxMTFCMUIxMTJGNUZFNjAwMzM3QkFCIC8qIFByb2Nlc3NM
YXVuY2hlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBy
b2Nlc3NMYXVuY2hlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxMTFC
NEIxMTJGNjE5MjAwMzM3QkFCIC8qIFBhZ2VDbGllbnRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDMTExQjRDMTEyRjYxOTIwMDMzN0JBQiAvKiBQYWdlQ2xpZW50SW1wbC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhZ2VDbGllbnRJbXBsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzExMUI1QjExMkY2Mjk4MDAzMzdCQUIgLyog
V2ViRXZlbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkV2
ZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI4LDcgKzMzMCw3
IEBACiAJCUJDMTMxQkM4MTE3MjZDMjgwMEI2OTcyNyAvKiBDb3JlSVBDTWVzc2FnZUtpbmRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVJUENNZXNzYWdlS2luZHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMxNzc0NjQxMThCOUZGNDAwN0Q5RTlBIC8q
IFdLUGFnZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzE3NzUzRTExOEJBQkYw
MDA3RDlFOUEgLyogR2VuZXJpY0NhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEdlbmVyaWNDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogV2ViUHJvY2Vzc0xhdW5jaGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NMYXVuY2hlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzFBN0M1NzExMzZFMTlDMDBGQjcxNjcgLyogUHJvY2Vzc0xh
dW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzFCNDE5NzExRDQxRDU3MDAxMUU4
REQgLyogV0tCdW5kbGVQYWdlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0J1bmRsZVBhZ2VQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMUREN0IxMTE0REMzOTYwMDVBREFGMyAvKiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjA0RUUwMTFDODNFOTgwMDhGMzM3NSAvKiBJ
bmplY3RlZEJ1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmplY3RlZEJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03OTgsNyAr
ODAwLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMxMTFC
MTkxMTJGNUZDNTAwMzM3QkFCIC8qIG1hYyAqLywKLQkJCQlCQzFBN0M1NzExMzZFMTlDMDBGQjcx
NjcgLyogV2ViUHJvY2Vzc0xhdW5jaGVyLmggKi8sCisJCQkJMUFFMTE3RjUxMURCQjMwOTAwOTgx
NjE1IC8qIFByb2Nlc3NMYXVuY2hlci5jcHAgKi8sCisJCQkJQkMxQTdDNTcxMTM2RTE5QzAwRkI3
MTY3IC8qIFByb2Nlc3NMYXVuY2hlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBMYXVuY2hlcjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04MDYsNyArODA5LDcgQEAKIAkJQkMxMTFC
MTkxMTJGNUZDNTAwMzM3QkFCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJQkMxMTFCMUIxMTJGNUZFNjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NM
YXVuY2hlci5tbSAqLywKKwkJCQlCQzExMUIxQjExMkY1RkU2MDAzMzdCQUIgLyogUHJvY2Vzc0xh
dW5jaGVyTWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTAyMSw3ICsxMDI0LDcgQEAKIAkJCQkxQTQzM0YwRDExM0M1M0REMDBG
QUNERTkgLyogV2ViRXJyb3JzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VFOThDNzExMzMxNEQ3
MDA2QkNDMjQgLyogV2ViUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFRTk4
Q0QxMTMzMTc0QzAwNkJDQzI0IC8qIFdLUGFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFdlYlByb2Nlc3NMYXVuY2hlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMxQTdDNTgxMTM2RTE5QzAwRkI3MTY3IC8qIFByb2Nlc3NMYXVuY2hl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyRTZFODgxMTQxOTcxNTAwQTYzQjFFIC8qIFJ1bkxv
b3AuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMkU2RThDMTE0MTk3MTUwMEE2M0IxRSAvKiBXb3Jr
SXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyRTZFOEUxMTQxOTcxNTAwQTYzQjFFIC8qIFdv
cmtRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTk1LDcgKzExOTgsNyBAQAogCQkJCUJDMTEx
QjBGMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMxMTFCMTAxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlByb2Nlc3NNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMTExQjExMTEyRjVFNEYwMDMzN0JBQiAvKiBXZWJQcm9jZXNzUHJv
eHkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkMxMTFCMUQxMTJGNUZFNjAwMzM3QkFCIC8qIFdl
YlByb2Nlc3NMYXVuY2hlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUJDMTExQjFEMTEyRjVGRTYw
MDMzN0JBQiAvKiBQcm9jZXNzTGF1bmNoZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzEx
MUI1MTExMkY2MTkyMDAzMzdCQUIgLyogUGFnZUNsaWVudEltcGwubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCQzExMUI1RTExMkY2Mjk4MDAzMzdCQUIgLyogV2ViRXZlbnRGYWN0b3J5Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNFRTk2NkMxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xMjM2LDYgKzEyMzksNyBAQAogCQkJCUJDRDI1RjE4MTFENkJE
RTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2
ODBCMTFEQkJENjkwMDY0NTVCMCAvKiBXS0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
NjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBJbW11dGFibGVBcnJheS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxQUUxMTdGNjExREJCMzA5MDA5ODE2MTUgLyogUHJvY2Vzc0xhdW5jaGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2ogYi9X
ZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagppbmRleCBlOTJmOGRhYzdlNThjZTUyYTRkNzZjNGVl
ZjZmMzk0OWIxODhlMGQ0Li4yOTQyMDY5ZmFhZTkwMzYzNzVkZjg3YzAwMGZkMTMxMTg1NmY4NjM2
IDEwMDc1NQotLS0gYS9XZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagorKysgYi9XZWJLaXQyL3dp
bi9XZWJLaXQyLnZjcHJvagpAQCAtOTU0LDE1ICs5NTQsMTUgQEAKIAkJCQkJCT4NCiAJCQkJCTwv
RmlsZT4NCiAJCQkJCTxGaWxlDQotCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJ
XENcV0tCYXNlLmgiDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tB
cnJheS5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCi0JCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0FycmF5LmNwcCINCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xBUElcQ1xXS0FycmF5LmgiDQogCQkJCQkJPg0KIAkJCQkJ
PC9GaWxlPg0KIAkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xB
UElcQ1xXS0FycmF5LmgiDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENc
V0tCYXNlLmgiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCkBAIC0xMDk4
LDE1ICsxMDk4LDE5IEBACiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9IkxhdW5jaGVyIg0KIAkJCQk+
DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xMYXVuY2hlclxX
ZWJQcm9jZXNzTGF1bmNoZXIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KIAkJCQk8RmlsdGVy
DQogCQkJCQlOYW1lPSJ3aW4iDQogCQkJCQk+DQogCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cVUlQcm9jZXNzXExhdW5jaGVyXHdpblxXZWJQcm9jZXNzTGF1bmNoZXIuY3BwIg0K
KwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVUlQcm9jZXNzXExhdW5jaGVyXFByb2Nlc3NMYXVuY2hl
ci5jcHAiDQorCQkJCQkJPg0KKwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1xMYXVuY2hlclxQcm9jZXNzTGF1bmNoZXIuaCINCisJCQkJ
CQk+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KKwkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
VUlQcm9jZXNzXExhdW5jaGVyXHdpblxQcm9jZXNzTGF1bmNoZXJXaW4uY3BwIg0KIAkJCQkJCT4N
CiAJCQkJCTwvRmlsZT4NCiAJCQkJPC9GaWx0ZXI+DQo=
</data>
<flag name="review"
          id="47696"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>