<?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>43524</bug_id>
          
          <creation_ts>2010-08-04 16:57:31 -0700</creation_ts>
          <short_desc>Add DOM Node wrapper class for injected bundle</short_desc>
          <delta_ts>2010-08-05 13:47:11 -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>PC</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260279</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-04 16:57:31 -0700</bug_when>
    <thetext>Add DOM Node handle class for injected bundle. This class should not expose any DOM APIs, but just be a handle that can be used to get a js wrapper for the node in a specific world.  A follow up patch will add the js wrapper world and js wrapper creation logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260429</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-04 23:49:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/8275641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260718</commentid>
    <comment_count>2</comment_count>
      <attachid>63610</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-05 11:26:43 -0700</bug_when>
    <thetext>Created attachment 63610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260720</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-05 11:28:48 -0700</bug_when>
    <thetext>Attachment 63610 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.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/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:51:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:52:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:53:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:54:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:58:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:59:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:60:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.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: 11 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>260747</commentid>
    <comment_count>4</comment_count>
      <attachid>63610</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-08-05 11:57:25 -0700</bug_when>
    <thetext>Comment on attachment 63610
Patch

&gt; Index: WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp
&gt; ===================================================================
&gt; --- WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp	(revision 0)
&gt; +++ WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp	(revision 0)

&gt; +
&gt; +static DOMHandleCache&amp; domHandleCache()
&gt; +{
&gt; +    static DOMHandleCache cache;

This should use DEFINE_STATIC_LOCAL to avoid an exit time destructor.

&gt; +PassRefPtr&lt;InjectedBundleNodeHandle&gt; InjectedBundleNodeHandle::get(Node* node)

I prefer the name getOrCreate here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260825</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-05 13:47:11 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/64778.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63610</attachid>
            <date>2010-08-05 11:26:43 -0700</date>
            <delta_ts>2010-08-05 11:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>24645</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDc2NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDgtMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRE9N
IE5vZGUgd3JhcHBlciBjbGFzcyBmb3IgaW5qZWN0ZWQgYnVuZGxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzUyNAorCisgICAgICAgIC0gVGhpcyBj
bGFzcyBzaG91bGQgbm90IGV4cG9zZSBhbnkgRE9NIEFQSXMsIGJ1dCBqdXN0IGJlIGEgaGFuZGxl
IHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2V0IGEgSlMKKyAgICAgICAgICB3cmFwcGVyIGZvciB0aGUg
bm9kZSBpbiBhIHNwZWNpZmljIHdvcmxkLgorCisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5o
OgorICAgICAgICAoV2ViS2l0OjpBUElPYmplY3Q6Oik6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhc2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxl
LmNwcDogQWRkZWQuCisgICAgICAgIChXS0J1bmRsZU5vZGVIYW5kbGVHZXRUeXBlSUQpOgorICAg
ICAgICAoV0tCdW5kbGVOb2RlSGFuZGxlUmV0YWluKToKKyAgICAgICAgKFdLQnVuZGxlTm9kZUhh
bmRsZVJlbGVhc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6ZG9tSGFuZGxlQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpnZXRET01IYW5kbGUpOgorICAg
ICAgICAoV2ViS2l0OjpzZXRET01IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpyZW1vdmVET01I
YW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6On5J
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjp0eXBlKToKKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi52Y3Byb2o6CisgICAgICAgICogd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZToKKwogMjAx
MC0wOC0wNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNjQ3
NjYpCisrKyBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NyArNTUsOCBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVCdW5kbGUsCiAgICAgICAgIFR5cGVCdW5k
bGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZVBhZ2UsCi0gICAgICAgIAorICAgICAgICBUeXBl
QnVuZGxlTm9kZUhhbmRsZSwKKwogICAgICAgICAvLyBQbGF0Zm9ybSBzcGVjaWZpYwogICAgICAg
ICBUeXBlVmlldwogICAgIH07CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gNjQ3NjYpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTgwLDYgKzE4MCwxMCBAQAogCQlC
QzJFNkU4QzExNDE5NzE1MDBBNjNCMUUgLyogV29ya0l0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU2RTdDMTE0MTk3MEMwMEE2M0IxRSAvKiBX
b3JrSXRlbS5oICovOyB9OwogCQlCQzJFNkU4RDExNDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkU2
RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQlCQzJFNkU4RTEx
NDE5NzE1MDBBNjNCMUUgLyogV29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJFNkU3RTExNDE5NzBDMDBBNjNCMUUgLyogV29ya1F1ZXVl
LmggKi87IH07CisJCUJDNEJFRUFCMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDNEJFRUE5MTIwQTBBNUUwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCAq
LzsgfTsKKwkJQkM0QkVFQUMxMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzRCRUVBQTEyMEEwQTVGMDBGQkEwQzcgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCAq
LzsgfTsKKwkJQkM0QkVGRTExMjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0QkVGREYx
MjBBMUE0QzAwRkJBMEM3IC8qIFdLQnVuZGxlTm9kZUhhbmRsZS5oICovOyB9OworCQlCQzRCRUZF
MjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNEJFRkUwMTIwQTFBNEMwMEZCQTBD
NyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuY3BwICovOyB9OwogCQlCQzU5NTM0MjEwRkMwNDUyMDA5
OEY4MkQgLyogV2ViTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzU5NTM0MDEwRkMwNDUyMDA5OEY4MkQgLyogV2ViTG9hZGVyQ2xp
ZW50LmggKi87IH07CiAJCUJDNTk3MDc1MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTk3MDc0
MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLzsgfTsKIAkJQkM1RjdCQjQxMTgy
Mzc2QzAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVGN0JCMjExODIzNzZDMDA1MkMw
MkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCAqLzsgfTsKQEAgLTQ5Myw2ICs0OTcs
MTAgQEAKIAkJQkMyRTZFN0MxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMkU2RTdEMTE0MTk3MEMwMEE2M0IxRSAvKiBXb3JrUXVldWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRTZFN0UxMTQxOTcwQzAwQTYzQjFFIC8qIFdvcmtRdWV1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrUXVldWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM0QkVFQTkxMjBBMEE1RTAwRkJBMEM3IC8qIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkM0QkVFQUExMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzRCRUZERjEyMEExQTRD
MDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQnVuZGxlTm9kZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzRCRUZFMDEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlTm9kZUhhbmRsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTk1MzQwMTBGQzA0NTIwMDk4Rjgy
RCAvKiBXZWJMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTk3MDc0
MTE2NTkxRDAwMDU1MUZDQSAvKiBQcm9jZXNzTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUHJvY2Vzc01vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDNUY3QkIyMTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMDQsNiArMTExMiw3
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzIwNEVFNzExQzgzRUFEMDA4RjMzNzUgLyogQVBJ
ICovLAogCQkJCUJDMjA0RUU0MTFDODNFOUMwMDhGMzM3NSAvKiBtYWMgKi8sCisJCQkJQkM0QkVF
OTYxMjBBMDkxNzAwRkJBMEM3IC8qIERPTSAqLywKIAkJCQlCQzIwNEVFMDExQzgzRTk4MDA4RjMz
NzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwICovLAogCQkJCUJDMjA0RUUxMTFDODNFOTgwMDhGMzM3
NSAvKiBJbmplY3RlZEJ1bmRsZS5oICovLAogCQkJCUUxRUU1M0U2MTFGOENGRkIwMENDQkVFNCAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuY3BwICovLApAQCAtMTEzNyw3ICsxMTQ2
LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMjA0RUU5MTFDODNFQzgwMDhGMzM3NSAvKiBX
S0J1bmRsZS5jcHAgKi8sCiAJCQkJQkMyMDRFRUExMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVuZGxl
LmggKi8sCi0JCQkJQkNGMDQ5RTUxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlUHJpdmF0ZS5o
ICovLAogCQkJCUJDMjA0RUVCMTFDODNFQzgwMDhGMzM3NSAvKiBXS0J1bmRsZUFQSUNhc3QuaCAq
LywKIAkJCQlCQzIwNEVFQzExQzgzRUM4MDA4RjMzNzUgLyogV0tCdW5kbGVCYXNlLmggKi8sCiAJ
CQkJQkNEMjVGMTYxMUQ2QkRFMTAwMTY5QjBFIC8qIFdLQnVuZGxlRnJhbWUuY3BwICovLApAQCAt
MTE0Niw5ICsxMTU0LDEyIEBACiAJCQkJQkMyMDRFRUQxMUM4M0VDODAwOEYzMzc1IC8qIFdLQnVu
ZGxlSW5pdGlhbGl6ZS5oICovLAogCQkJCUUxRUU1NjU1MTFGOEY3MTcwMENDQkVFNCAvKiBXS0J1
bmRsZU5vZGUuY3BwICovLAogCQkJCUUxRUU1NjJGMTFGOEY2QUEwMENDQkVFNCAvKiBXS0J1bmRs
ZU5vZGUuaCAqLywKKwkJCQlCQzRCRUZFMDEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2Rl
SGFuZGxlLmNwcCAqLywKKwkJCQlCQzRCRUZERjEyMEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVO
b2RlSGFuZGxlLmggKi8sCiAJCQkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxl
UGFnZS5jcHAgKi8sCiAJCQkJQkMyMDUyN0YxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFn
ZS5oICovLAogCQkJCUJDMUI0MTk3MTFENDFENTcwMDExRThERCAvKiBXS0J1bmRsZVBhZ2VQcml2
YXRlLmggKi8sCisJCQkJQkNGMDQ5RTUxMUZFMjBGNjAwRjg2QTU4IC8qIFdLQnVuZGxlUHJpdmF0
ZS5oICovLAogCQkJCUUxRUU1NUY3MTFGOEYxQkMwMENDQkVFNCAvKiBXS0J1bmRsZVJhbmdlLmNw
cCAqLywKIAkJCQlFMUVFNTVGMzExRjhGMTg5MDBDQ0JFRTQgLyogV0tCdW5kbGVSYW5nZS5oICov
LAogCQkJKTsKQEAgLTExODQsNiArMTE5NSwxNSBAQAogCQkJcGF0aCA9IFBsYXRmb3JtOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkM0QkVFOTYxMjBBMDkxNzAwRkJBMEM3
IC8qIERPTSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QkM0QkVFQUExMjBBMEE1RjAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAg
Ki8sCisJCQkJQkM0QkVFQTkxMjBBMEE1RTAwRkJBMEM3IC8qIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBET007CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQlCQzhBNTAwRTExNzY1QUQ0MDA3NTc1NzMgLyogV2ViS2l0MiAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMzgyLDYgKzE0MDIsOCBA
QAogCQkJCTUxNkE0QTU5MTIwQTFBQjUwMEMwNUI3RiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTZBNEE1RDEyMEEyQ0NEMDBDMDVCN0YgLyogV2ViRXJyb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMjRCRUQ1MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDNEJFRUFCMTIwQTBBNUYwMEZCQTBDNyAvKiBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDNEJFRkUxMTIwQTFBNEMwMEZCQTBD
NyAvKiBXS0J1bmRsZU5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTU5MCw2ICsxNjEy
LDggQEAKIAkJCQlDMEUzQUE3QjEyMDlFODM1MDBBNDlEMDEgLyogTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxNkE0QTVBMTIwQTFBQjUwMEMwNUI3RiAvKiBXS0Vycm9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMjRCRjNBMTIwODk2QTYwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnlN
YWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM0QkVFQUMxMjBBMEE1RjAwRkJBMEM3IC8qIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzRCRUZFMjEy
MEExQTRDMDBGQkEwQzcgLyogV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJ
Q2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUFQSUNhc3QuaAkocmV2aXNpb24gNjQ3NjYpCisrKyBXZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDI0ICs0MCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGU7CitjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIEFQSVR5cGU+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbyB7IH07Ci10ZW1wbGF0ZTw+IHN0
cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY+ICAg
ICB7IHR5cGVkZWYgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogSW1wbFR5cGU7IH07CiB0
ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVBUElUeXBlSW5mbzxXS0J1bmRsZUZyYW1lUmVmPiAgICAg
ICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViRnJhbWUqIEltcGxUeXBlOyB9OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVOb2RlUmVmPiAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlZGVmIFdlYkNvcmU6Ok5vZGUqIEltcGxUeXBlOyB9OwogdGVtcGxhdGU8PiBz
dHJ1Y3QgQnVuZGxlQVBJVHlwZUluZm88V0tCdW5kbGVQYWdlUmVmPiAgICAgICAgICAgICAgICAg
ICAgeyB0eXBlZGVmIFdlYlBhZ2UqIEltcGxUeXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgQnVu
ZGxlQVBJVHlwZUluZm88V0tCdW5kbGVSYW5nZVJlZj4gICAgICAgICAgICAgICAgICAgeyB0eXBl
ZGVmIFdlYkNvcmU6OlJhbmdlKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEJ1bmRs
ZUFQSVR5cGVJbmZvPFdLQnVuZGxlUmVmPiAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZWRl
ZiBJbmplY3RlZEJ1bmRsZSogSW1wbFR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5kbGVB
UElUeXBlSW5mbzxXS0J1bmRsZU5vZGVIYW5kbGVSZWY+ICAgICAgICAgICAgICB7IHR5cGVkZWYg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBJbXBsVHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0
IEJ1bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlTm9kZVJlZj4gICAgICAgICAgICAgICAgICAgIHsg
dHlwZWRlZiBXZWJDb3JlOjpOb2RlKiBJbXBsVHlwZTsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEJ1
bmRsZUFQSVR5cGVJbmZvPFdLQnVuZGxlUmFuZ2VSZWY+ICAgICAgICAgICAgICAgICAgIHsgdHlw
ZWRlZiBXZWJDb3JlOjpSYW5nZSogSW1wbFR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBCdW5k
bGVBUElUeXBlSW5mbzxXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWY+ICAgICB7IHR5cGVk
ZWYgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogSW1wbFR5cGU7IH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEltcGxUeXBlPiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvIHsgfTsKIHRlbXBs
YXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxJbmplY3RlZEJ1bmRsZSo+ICAgICAgICAg
ICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVJlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8PiBz
dHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSo+ICAgICAg
ICAgeyB0eXBlZGVmIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBBUElUeXBlOyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPFdlYkZyYW1lKj4gICAgICAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlZGVmIFdLQnVuZGxlRnJhbWVSZWYgQVBJVHlwZTsgfTsKK3RlbXBsYXRlPD4g
c3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJQYWdlKj4gICAgICAgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZWRlZiBXS0J1bmRsZVBhZ2VSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3Ry
dWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKj4gICAg
IHsgdHlwZWRlZiBXS0J1bmRsZUNTU1N0eWxlRGVjbGFyYXRpb25SZWYgQVBJVHlwZTsgfTsKIHRl
bXBsYXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpOb2RlKj4gICAgICAg
ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZU5vZGVSZWYgQVBJVHlwZTsgfTsKIHRlbXBs
YXRlPD4gc3RydWN0IEJ1bmRsZUltcGxUeXBlSW5mbzxXZWJDb3JlOjpSYW5nZSo+ICAgICAgICAg
ICAgICAgICAgIHsgdHlwZWRlZiBXS0J1bmRsZVJhbmdlUmVmIEFQSVR5cGU7IH07Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBCdW5kbGVJbXBsVHlwZUluZm88V2ViRnJhbWUqPiAgICAgICAgICAgICAgICAg
ICAgICAgICB7IHR5cGVkZWYgV0tCdW5kbGVGcmFtZVJlZiBBUElUeXBlOyB9OwotdGVtcGxhdGU8
PiBzdHJ1Y3QgQnVuZGxlSW1wbFR5cGVJbmZvPFdlYlBhZ2UqPiAgICAgICAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlZGVmIFdLQnVuZGxlUGFnZVJlZiBBUElUeXBlOyB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIApJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhc2UuaAkocmV2aXNpb24gNjQ3NjYpCisrKyBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDEwICsyNywxMiBAQAogI2RlZmluZSBXS0J1bmRsZUJhc2VfaAogCiB0
eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1bmRsZSogV0tCdW5kbGVSZWY7Ci10eXBlZGVmIHN0cnVj
dCBPcGFxdWVXS0J1bmRsZURPTUNTU1N0eWxlRGVjbGFyYXRpb24qIFdLQnVuZGxlQ1NTU3R5bGVE
ZWNsYXJhdGlvblJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdLQnVu
ZGxlRnJhbWVSZWY7Ci10eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGUqIFdLQnVuZGxl
Tm9kZVJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5k
bGVOb2RlSGFuZGxlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVQYWdlKiBXS0J1
bmRsZVBhZ2VSZWY7CisKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogV0tCdW5kbGVDU1NTdHlsZURlY2xhcmF0aW9uUmVmOwordHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGVOb2RlKiBXS0J1bmRsZU5vZGVSZWY7CiB0eXBlZGVmIHN0cnVjdCBP
cGFxdWVXS0J1bmRsZVJhbmdlKiBXS0J1bmRsZVJhbmdlUmVmOwogCiAjdW5kZWYgV0tfRVhQT1JU
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlTm9kZS5oCShyZXZpc2lvbiA2NDc2NikKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTAgKzI5LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV0tCdW5kbGVCYXNlLmg+CiAKLSNpZm5kZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxz
dGRib29sLmg+Ci0jZW5kaWYKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNl
bmRpZgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJXS0J1bmRsZU5vZGVIYW5kbGUuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2Fz
dC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0J1bmRsZU5vZGVI
YW5kbGVHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0b1JlZihJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OkFQSVR5cGUpOworfQorCitXS0J1bmRsZU5vZGVIYW5kbGVSZWYgV0tCdW5kbGVOb2Rl
SGFuZGxlUmV0YWluKFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmKQoreworICAg
IHRvV0sobm9kZUhhbmRsZVJlZiktPnJlZigpOworICAgIHJldHVybiBub2RlSGFuZGxlUmVmOwor
fQorCit2b2lkIFdLQnVuZGxlTm9kZUhhbmRsZVJlbGVhc2UoV0tCdW5kbGVOb2RlSGFuZGxlUmVm
IG5vZGVIYW5kbGVSZWYpCit7CisgICAgdG9XSyhub2RlSGFuZGxlUmVmKS0+ZGVyZWYoKTsKK30K
SW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5v
ZGVIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlTm9k
ZUhhbmRsZV9oCisjZGVmaW5lIFdLQnVuZGxlTm9kZUhhbmRsZV9oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVCYXNlLmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlE
IFdLQnVuZGxlTm9kZUhhbmRsZUdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVOb2Rl
SGFuZGxlUmVmIFdLQnVuZGxlTm9kZUhhbmRsZVJldGFpbihXS0J1bmRsZU5vZGVIYW5kbGVSZWYg
bm9kZUhhbmRsZSk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZU5vZGVIYW5kbGVSZWxlYXNlKFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8qIFdLQnVuZGxlTm9kZUhhbmRsZV9oICovCkluZGV4OiBXZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Ob2RlLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit0eXBlZGVmIEhhc2hNYXA8Tm9kZSosIEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZSo+IERPTUhhbmRsZUNhY2hlOworCitzdGF0aWMgRE9NSGFuZGxlQ2FjaGUmIGRv
bUhhbmRsZUNhY2hlKCkKK3sKKyAgICBzdGF0aWMgRE9NSGFuZGxlQ2FjaGUgY2FjaGU7CisgICAg
cmV0dXJuIGNhY2hlOworfQorCitzdGF0aWMgaW5saW5lIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZSogZ2V0RE9NSGFuZGxlKE5vZGUqIGRvbU9iamVjdCkKK3sKKyAgICByZXR1cm4gZG9tSGFuZGxl
Q2FjaGUoKS5nZXQoZG9tT2JqZWN0KTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNldERPTUhh
bmRsZShOb2RlKiBkb21PYmplY3QsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogaGFuZGxlKQor
eworICAgIGRvbUhhbmRsZUNhY2hlKCkuc2V0KGRvbU9iamVjdCwgaGFuZGxlKTsKK30KKworc3Rh
dGljIGlubGluZSB2b2lkIHJlbW92ZURPTUhhbmRsZShOb2RlKiBkb21PYmplY3QpCit7CisgICAg
ZG9tSGFuZGxlQ2FjaGUoKS5yZW1vdmUoZG9tT2JqZWN0KTsKK30KKworUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0KE5vZGUq
IG5vZGUpCit7CisgICAgc3RkOjpwYWlyPERPTUhhbmRsZUNhY2hlOjppdGVyYXRvciwgYm9vbD4g
cmVzdWx0ID0gZG9tSGFuZGxlQ2FjaGUoKS5hZGQobm9kZSwgMCk7CisgICAgaWYgKCFyZXN1bHQu
c2Vjb25kKQorICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKKworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmNyZWF0ZShu
b2RlKTsKKyAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5vZGVIYW5kbGUuZ2V0KCk7CisgICAg
cmV0dXJuIG5vZGVIYW5kbGUucmVsZWFzZSgpOworfQorCitQYXNzUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpjcmVhdGUoTm9kZSogbm9k
ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZShu
b2RlKSk7Cit9CisKK0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlKE5vZGUqIG5vZGUpCisgICAgOiBtX25vZGUobm9kZSkKK3sKK30KKworSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlOjp+SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKCkKK3sKKyAgICBkb21I
YW5kbGVDYWNoZSgpLnJlbW92ZShtX25vZGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaAkocmV2aXNpb24gMCkK
KysrIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBOb2Rl
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlIDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IFR5cGVCdW5kbGVOb2RlSGFuZGxlOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBnZXQoV2ViQ29yZTo6Tm9kZSopOworICAgIH5Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpOb2RlKik7CisgICAg
SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKFdlYkNvcmU6Ok5vZGUqKTsKKworICAgIHZpcnR1YWwg
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGU+IG1fbm9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHJldmlzaW9uIDY0NzY2KQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTc3MCw2ICs3NzAsMTQgQEAKIAkJCQkJCQk+DQogCQkJCQkJPC9G
aWxlPg0KIAkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xJ
bmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGVIYW5kbGUuY3BwIg0KKwkJCQkJCQk+DQor
CQkJCQkJPC9GaWxlPg0KKwkJCQkJCTxGaWxlDQorCQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2Vi
UHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGVIYW5kbGUuaCINCisJCQkJ
CQkJPg0KKwkJCQkJCTwvRmlsZT4NCisJCQkJCQk8RmlsZQ0KIAkJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVQYWdlLmNwcCINCiAJ
CQkJCQkJPg0KIAkJCQkJCTwvRmlsZT4NCkBAIC03OTYsNiArODA0LDE4IEBACiAJCQkJCTwvRmls
dGVyPg0KIAkJCQk8L0ZpbHRlcj4NCiAJCQkJPEZpbHRlcg0KKwkJCQkJTmFtZT0iRE9NIg0KKwkJ
CQkJPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlByb2Nlc3NcSW5q
ZWN0ZWRCdW5kbGVcRE9NXEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAiDQorCQkJCQkJPg0K
KwkJCQkJPC9GaWxlPg0KKwkJCQkJPEZpbGUNCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFdlYlBy
b2Nlc3NcSW5qZWN0ZWRCdW5kbGVcRE9NXEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIg0KKwkJ
CQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJPC9GaWx0ZXI+DQorCQkJCTxGaWx0ZXINCiAJCQkJ
CU5hbWU9IndpbiINCiAJCQkJCT4NCiAJCQkJCTxGaWxlDQpJbmRleDogV2ViS2l0Mi93aW4vV2Vi
S2l0MkdlbmVyYXRlZC5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDJHZW5l
cmF0ZWQubWFrZQkocmV2aXNpb24gNjQ3NjYpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJh
dGVkLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgYWxsOgogICAgIHhjb3B5
IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlRnJhbWVQ
cml2YXRlLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlSW5pdGlh
bGl6ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAv
eSAvZCAiLi5cV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZU5vZGUuaCIg
IiQoV0VCS0lUT1VUUFVURElSKVxpbmNsdWRlXFdlYktpdDIiCisgICAgeGNvcHkgL3kgL2QgIi4u
XFdlYlByb2Nlc3NcSW5qZWN0ZWRCdW5kbGVcQVBJXGNcV0tCdW5kbGVOb2RlSGFuZGxlLmgiICIk
KFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxX
ZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUGFnZS5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAiLi5cV2ViUHJvY2Vz
c1xJbmplY3RlZEJ1bmRsZVxBUElcY1xXS0J1bmRsZVBhZ2VQcml2YXRlLmgiICIkKFdFQktJVE9V
VFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxXZWJQcm9jZXNz
XEluamVjdGVkQnVuZGxlXEFQSVxjXFdLQnVuZGxlUHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRE
SVIpXGluY2x1ZGVcV2ViS2l0MiIK
</data>
<flag name="review"
          id="52000"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>