<?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>102732</bug_id>
          
          <creation_ts>2012-11-19 16:11:38 -0800</creation_ts>
          <short_desc>IndexedDB: Change frontend to call IDBDatabaseBackendInterface::createTransaction()</short_desc>
          <delta_ts>2012-11-28 15:43:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102730</dependson>
          <blocked>102733</blocked>
    
    <blocked>102736</blocked>
    
    <blocked>102741</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>levin+threading</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>771155</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-19 16:11:38 -0800</bug_when>
    <thetext>Part of the transaction id refactor

In IDBDatabase::transaction, make sure we call IDBDatabaseBackend::createTransaction() rather than transaction()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771194</commentid>
    <comment_count>1</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-19 16:42:43 -0800</bug_when>
    <thetext>Rather than calling through IDBTransactionBackendInterface, backend object store calls should just call through IDBDatabase with a transaction id

specifically: (leaving out the details of request/callback hookup/etc)
* IDBObjectStoreBackendInterface::openCursor() becomes 
  IDBDatabaseBackendInterface::openCursor(transaction_id, objectstore_id, -1, keyRange, direction, key=false);
* IDBObjectStoreBackendInterface::openKeyCursor() becomes 
  IDBDatabaseBackendInterface::openCursor(transaction_id, objectstore_id, -1, keyRange, direction, key=true);
* IDBObjectStoreBackendInterface::count() becomes 
  IDBDatabaseBackendInterface::count(transaction_id, objectstore_id, -1, keyRange);
* IDBObjectStoreBackendInterface::get() becomes 
  IDBDatabaseBackendInterface::get(transaction_id, objectstore_id, -1, keyRange, key=false);
* IDBObjectStoreBackendInterface::put() becomes
  IDBDatabaseBackendInterface::put(transaction_id, objectstore_id, -1, key);
* IDBObjectStoreBackendInterface::deleteFunctiuon() becomes
  IDBDatabaseBackendInterface::deleteFunction(transaction_id, objectstore_id, -1, keyRange);
* IDBObjectStoreBackendInterface::clear() becomes
  IDBDatabaseBackendInterface::clear(transaction_id, objectstore_id);
* IDBObjectStoreBackendInterface::setIndexKeys() becomes
  IDBDatabaseBackendInterface::setIndexKeys(transaction_id, objectstore_id, index_ids, index_keys, ...);
* IDBObjectStoreBackendInterface::setIndexesReady() becomes
  IDBDatabaseBackendInterface::setIndexesReady(transaction_id, objectstore_id, index_ids);


This bug does not cover:
* IDBObjectStoreBackendInterface::createIndex()
* IDBObjectStoreBackendInterface::deleteIndex()

(I&apos;m leaving openKeyCursor in here for now, even though it isn&apos;t yet implemented in the IDL or in the spec)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771201</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-19 16:45:05 -0800</bug_when>
    <thetext>[oops, wrong bug: ignore that comment 1]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777043</commentid>
    <comment_count>3</comment_count>
      <attachid>176310</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-27 11:39:15 -0800</bug_when>
    <thetext>Created attachment 176310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777044</commentid>
    <comment_count>4</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-27 11:39:43 -0800</bug_when>
    <thetext>jsbell@ / dgrogan@ - a quick look before passing this along to tony?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777081</commentid>
    <comment_count>5</comment_count>
      <attachid>176310</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-11-27 12:03:29 -0800</bug_when>
    <thetext>Comment on attachment 176310
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.cpp:80
&gt; +    static int64_t currentTransactionId = 0;

This needs to be made thread-safe. A worker thread can race with the main thread here.

You might need AtomicallyInitializedStatic and atomicIncrement.

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.h:73
&gt; +    int64_t id() const;

Does anything use this or m_id? I guess they will be used when backend() and m_backend are deleted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777106</commentid>
    <comment_count>6</comment_count>
      <attachid>176323</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-27 12:20:21 -0800</bug_when>
    <thetext>Created attachment 176323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777214</commentid>
    <comment_count>7</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-27 14:13:14 -0800</bug_when>
    <thetext>tony@ - r? (this can&apos;t land until chrome is updated, which can&apos;t happen till the next webkit roll, that&apos;s why EWS is flailing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778395</commentid>
    <comment_count>8</comment_count>
      <attachid>176585</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-28 15:09:02 -0800</bug_when>
    <thetext>Created attachment 176585
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778427</commentid>
    <comment_count>9</comment_count>
      <attachid>176585</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 15:43:21 -0800</bug_when>
    <thetext>Comment on attachment 176585
Patch for landing

Clearing flags on attachment: 176585

Committed r136071: &lt;http://trac.webkit.org/changeset/136071&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778428</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 15:43:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176310</attachid>
            <date>2012-11-27 11:39:15 -0800</date>
            <delta_ts>2012-11-27 12:20:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102732-20121127113652.patch</filename>
            <type>text/plain</type>
            <size>11074</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2ZmIyZDczYmY5YjYz
ZGJkMDIxZDJkZjViNGZlMGQ0YzVjMTgyZC4uNGNhOTJkMGViNzEyMDk4ZWQyZjg3ZDIxYjcyNTRi
ZTA0NDIwNmU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENo
YW5nZSBmcm9udGVuZCB0byBjYWxsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRl
VHJhbnNhY3Rpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAyNzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIHRoZSBuZXcgY3JlYXRlVHJhbnNhY3Rpb24sIG5vdyB0aGF0IGl0IGhhcyBiZWVu
IHN0dWJiZWQKKyAgICAgICAgb3V0LiBUaGlzIGlzIHBhcnQgMiBvZiAzIG9mIGEgcmVmYWN0b3Iu
IFNlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NzMzIGZvciBwYXJ0IDMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMgcmVmYWN0b3Ig
c2ltcGx5IGtlZXBzIGFuZCBwcm9wYWdhdGVzIGEKKyAgICAgICAgY291bnRlciB0aGF0IGlzIGN1
cnJlbnRseSB1bnVzZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVw
Z3JhZGVOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpJREJUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0xOSAgQWxlYyBG
bGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBzdHVi
IG91dCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZVRyYW5zYWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXgg
N2YxYzk1NTUxZTYwY2ZmMjJmZjQ0NjlhNDdiNWZhNmExZTI0MWVhZi4uYWM1N2MwOTM5MzUwN2Y5
ZmZlZDU3YzZmYTk2NmU2ZTAyNWFmOWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNzUsNiArNzUsMTIgQEAgSURCRGF0YWJh
c2U6On5JREJEYXRhYmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAoraW50NjRfdCBJREJEYXRhYmFz
ZTo6bmV4dFRyYW5zYWN0aW9uSWQoKQoreworICAgIHN0YXRpYyBpbnQ2NF90IGN1cnJlbnRUcmFu
c2FjdGlvbklkID0gMDsKKyAgICByZXR1cm4gKytjdXJyZW50VHJhbnNhY3Rpb25JZDsKK30KKwog
dm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbikKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwpAQCAtMjU1LDEyICsyNjEsMTQg
QEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICAvLyBjYW4gYmUgcXVldWVkIGFnYWluc3Qg
dGhlIHRyYW5zYWN0aW9uIGF0IGFueSBwb2ludC4gVGhleSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBh
cyBzb29uIGFzIHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJl
ZC4KICAgICAvLyBBbHNvIG5vdGUgdGhhdCBlYWNoIGJhY2tlbmQgb2JqZWN0IGNvcnJlc3BvbmRz
IHRvIGV4YWN0bHkgb25lIElEQlRyYW5zYWN0aW9uIG9iamVjdC4KLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQt
PnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKTsKKyAgICBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQgPSBuZXh0VHJhbnNhY3Rpb25JZCgpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlVHJh
bnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUpOwogICAgIGlmICgh
dHJhbnNhY3Rpb25CYWNrZW5kKSB7CiAgICAgICAgIEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tlbmQsIHNjb3BlLCBt
b2RlLCB0aGlzKTsKKworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRyYW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9u
QmFja2VuZCwgc2NvcGUsIG1vZGUsIHRoaXMpOwogICAgIHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0
Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVs
ZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmgKaW5kZXggZWUyZDIzMjM0Y2ZhMTdhNjBiZTQ4YTQ2ZmI3NjY3YTY2NmQwMTAyNi4uNmQx
MWZjNjk1YzU0NDg0MGJlMmNiNGY4M2Q2YzU0YzM5M2NiOTA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC05OSw2ICs5OSw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbmRPYmplY3RTdG9yZUlkKG5hbWUpICE9IElEQk9iamVj
dFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZDsKICAgICB9CiAKKyAgICBzdGF0aWMgaW50NjRfdCBu
ZXh0VHJhbnNhY3Rpb25JZCgpOworCiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5j
cHAKaW5kZXggYjIzOTAxNjE5YmNhM2ExMDlhZmE2ZDI1YThhOGQ3ZTVlZjc4MjRjYi4uNTUxZDBk
ZDA5M2JhN2NlMGZkMDY4M2MzNWFiNTAxMTdjMjNlMTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTg5LDcg
Kzg5LDggQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBv
bGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
LT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0g
MDsKIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBW
ZWN0b3I8U3RyaW5nPigpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFi
YXNlLmdldCgpLCB0aGlzKTsKKyAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFz
ZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250
ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRy
YW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uQmFja2VuZCwgVmVjdG9yPFN0cmluZz4oKSwgSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CiAgICAg
dHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOwogICAgIG1f
dHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlk
YkRhdGFiYXNlLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU0ZDE2N2ZmYWQwYTNiMjE1MjBhODEwNTQ0NjhlNDky
YmQ5NWQyNzIuLjk4NDg0Y2I4Y2JiOGQzY2NiNDJhODJkM2ZlMDJmYjIyNjQyMWM2NGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0z
MjUsNyArMzI1LDggQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHBycEJhY2tlbmQKICAgICBpZiAoIXNob3VsZEVu
cXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGJhY2tlbmQsIFZlY3RvcjxTdHJpbmc+KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9O
X0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNlKCkuZ2V0KCkpOworICAgIGludDY0X3QgdHJh
bnNhY3Rpb25JZCA9IElEQkRhdGFiYXNlOjpuZXh0VHJhbnNhY3Rpb25JZCgpOworICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25JZCwgYmFja2VuZCwgVmVjdG9yPFN0cmlu
Zz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBtX3NvdXJjZS0+aWRiRGF0YWJh
c2UoKS5nZXQoKSk7CiAgICAgYmFja2VuZC0+c2V0Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsK
ICAgICBtX3RyYW5zYWN0aW9uID0gZnJvbnRlbmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCA3YWIzOGU5YzNlYTk5
YzNlZmJjYmM0NTVkMGI3ZDc2ZWVlZDJkNmRkLi44MzdkNTQ2YTdjZmYwYzBmZjFkMTI0NGIxNmZl
NzM5NmM3NDdlZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00NCwxNSArNDQsMTUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2Jq
ZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRi
KQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNl
KiBkYikKIHsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0ID0gMDsKLSAgICBy
ZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJhY2tlbmQsIG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIGRi
LCBvcGVuREJSZXF1ZXN0KTsKKyAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGlkLCBiYWNrZW5k
LCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJ
REJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVl
c3QqIG9wZW5EQlJlcXVlc3QpCitQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUg
bW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQog
ewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElE
QlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIGRi
LCBvcGVuREJSZXF1ZXN0KSkpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rp
b24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGlkLCBiYWNrZW5kLCBvYmpl
Y3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVxdWVzdCkpKTsKICAgICB0cmFuc2FjdGlv
bi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsK
IH0KQEAgLTg4LDkgKzg4LDEwIEBAIGNvbnN0IEF0b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246
Om1vZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAKLUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2Fj
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9i
amVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBk
YiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKK0lEQlRyYW5zYWN0aW9uOjpJREJU
cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1v
ZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tl
bmQpCisgICAgLCBtX2lkKGlkKQogICAgICwgbV9kYXRhYmFzZShkYikKICAgICAsIG1fb2JqZWN0
U3RvcmVOYW1lcyhvYmplY3RTdG9yZU5hbWVzKQogICAgICwgbV9vcGVuREJSZXF1ZXN0KG9wZW5E
QlJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaAppbmRleCA0YzZhMDY5NWY4ZGYwMzJjNTVkZmYxNzAwOTYwM2M0ZTI5NDgyZDBh
Li5iNWFjMGMzODU3M2UzYWY4YjNlMmE2MDhlMTgyOGQyZWY1NDU0ZmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTU2LDgg
KzU2LDggQEAgcHVibGljOgogICAgICAgICBWRVJTSU9OX0NIQU5HRSA9IDIKICAgICB9OwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2Uq
KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRh
YmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRhYmFzZSopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGlu
dDY0X3QsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1vZGUsIElEQkRhdGFiYXNlKiwgSURC
T3BlbkRCUmVxdWVzdCopOwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uKCk7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlUmVhZE9ubHkoKTsKQEAgLTcwLDYgKzcwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGVUb1N0cmluZyhN
b2RlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqIGJhY2tlbmQoKSBjb25zdDsKKyAgICBpbnQ2NF90IGlkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gQWN0aXZlOyB9CiAgICAgYm9vbCBp
c0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBGaW5pc2hlZDsgfQogICAgIGJv
b2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBSRUFEX09OTFk7IH0KQEAg
LTEyMiw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2Fj
dGlvbkNhbGxiYWNrcz46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJP
cGVuREJSZXF1ZXN0Kik7CisgICAgSURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGludDY0X3QsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mLCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVl
c3QqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2
b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKQEAgLTE0Myw3ICsxNDQsOSBAQCBwcml2YXRlOgogICAg
ICAgICBGaW5pc2hlZCwgLy8gTm8gbW9yZSBldmVudHMgd2lsbCBmaXJlIGFuZCBubyBuZXcgcmVx
dWVzdHMgbWF5IGJlIGZpbGVkLgogICAgIH07CiAKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHJlZmVy
ZW5jZXMgdG8gdGhlIGJhY2tlbmQgd2hlbiB0aGUgYmFja2VuZCBpcyBmdWxseSBmbGF0dGVuZWQ6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTc3NAogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKKyAgICBpbnQ2NF90
IG1faWQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+IG1fb2JqZWN0U3RvcmVOYW1lczsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBt
X29wZW5EQlJlcXVlc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176323</attachid>
            <date>2012-11-27 12:20:21 -0800</date>
            <delta_ts>2012-11-28 15:09:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102732-20121127121758.patch</filename>
            <type>text/plain</type>
            <size>11386</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmM2ZmIyZDczYmY5YjYz
ZGJkMDIxZDJkZjViNGZlMGQ0YzVjMTgyZC4uNGNhOTJkMGViNzEyMDk4ZWQyZjg3ZDIxYjcyNTRi
ZTA0NDIwNmU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENo
YW5nZSBmcm9udGVuZCB0byBjYWxsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRl
VHJhbnNhY3Rpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAyNzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIHRoZSBuZXcgY3JlYXRlVHJhbnNhY3Rpb24sIG5vdyB0aGF0IGl0IGhhcyBiZWVu
IHN0dWJiZWQKKyAgICAgICAgb3V0LiBUaGlzIGlzIHBhcnQgMiBvZiAzIG9mIGEgcmVmYWN0b3Iu
IFNlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NzMzIGZvciBwYXJ0IDMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMgcmVmYWN0b3Ig
c2ltcGx5IGtlZXBzIGFuZCBwcm9wYWdhdGVzIGEKKyAgICAgICAgY291bnRlciB0aGF0IGlzIGN1
cnJlbnRseSB1bnVzZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJh
bnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIChJREJEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0OjpvblVw
Z3JhZGVOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
OjpJREJUcmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaDoKKyAgICAgICAgKElEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0xOSAgQWxlYyBG
bGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBzdHVi
IG91dCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OmNyZWF0ZVRyYW5zYWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXgg
N2YxYzk1NTUxZTYwY2ZmMjJmZjQ0NjlhNDdiNWZhNmExZTI0MWVhZi4uZWIxNTkzYzAwNmY5ODRh
OGEwMGY5YmUwMGI1ZjEwMDkzYTdjNmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzUsNiArNzcsMTQg
QEAgSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAoraW50NjRf
dCBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKQoreworICAgIC8vIE9ubHkga2VlcCBh
IDMyLWJpdCBjb3VudGVyIHRvIGFsbG93IHBvcnRzIHRvIHVzZSB0aGUgb3RoZXIgMzIKKyAgICAv
LyBiaXRzIG9mIHRoZSBpZC4KKyAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoaW50LCBj
dXJyZW50VHJhbnNhY3Rpb25JZCA9IDApOworICAgIHJldHVybiBhdG9taWNJbmNyZW1lbnQoJmN1
cnJlbnRUcmFuc2FjdGlvbklkKTsKK30KKwogdm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25D
cmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKICAgICBBU1NFUlQodHJhbnNh
Y3Rpb24pOwpAQCAtMjU1LDEyICsyNjUsMTQgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAg
ICAvLyBjYW4gYmUgcXVldWVkIGFnYWluc3QgdGhlIHRyYW5zYWN0aW9uIGF0IGFueSBwb2ludC4g
VGhleSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBhcyBzb29uIGFzIHRoZQogICAgIC8vIGFwcHJvcHJp
YXRlIGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJlZC4KICAgICAvLyBBbHNvIG5vdGUgdGhhdCBlYWNo
IGJhY2tlbmQgb2JqZWN0IGNvcnJlc3BvbmRzIHRvIGV4YWN0bHkgb25lIElEQlRyYW5zYWN0aW9u
IG9iamVjdC4KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFu
c2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQtPnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBt
b2RlKTsKKyAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBuZXh0VHJhbnNhY3Rpb25JZCgpOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFj
a2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgb2JqZWN0
U3RvcmVJZHMsIG1vZGUpOwogICAgIGlmICghdHJhbnNhY3Rpb25CYWNrZW5kKSB7CiAgICAgICAg
IEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShjb250ZXh0LCB0
cmFuc2FjdGlvbkJhY2tlbmQsIHNjb3BlLCBtb2RlLCB0aGlzKTsKKworICAgIFJlZlB0cjxJREJU
cmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQs
IHRyYW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uQmFja2VuZCwgc2NvcGUsIG1vZGUsIHRoaXMpOwog
ICAgIHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsK
ICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKaW5kZXggZWUyZDIzMjM0Y2ZhMTdhNjBi
ZTQ4YTQ2ZmI3NjY3YTY2NmQwMTAyNi4uNmQxMWZjNjk1YzU0NDg0MGJlMmNiNGY4M2Q2YzU0YzM5
M2NiOTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oCkBAIC05OSw2ICs5OSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbmRPYmpl
Y3RTdG9yZUlkKG5hbWUpICE9IElEQk9iamVjdFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZDsKICAg
ICB9CiAKKyAgICBzdGF0aWMgaW50NjRfdCBuZXh0VHJhbnNhY3Rpb25JZCgpOworCiAgICAgdXNp
bmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPElE
QkRhdGFiYXNlPjo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggYjIzOTAxNjE5YmNhM2ExMDlhZmE2
ZDI1YThhOGQ3ZTVlZjc4MjRjYi4uNTUxZDBkZDA5M2JhN2NlMGZkMDY4M2MzNWFiNTAxMTdjMjNl
MTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHAKQEAgLTg5LDcgKzg5LDggQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5z
YWMKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsK
ICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0gMDsKIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBWZWN0b3I8U3RyaW5nPigpLCBJREJUcmFuc2FjdGlv
bjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlzKTsKKyAgICBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRyYW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uQmFja2Vu
ZCwgVmVjdG9yPFN0cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJE
YXRhYmFzZS5nZXQoKSwgdGhpcyk7CiAgICAgdHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFj
a3MoZnJvbnRlbmQuZ2V0KCkpOwogICAgIG1fdHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKICAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IGU0ZDE2
N2ZmYWQwYTNiMjE1MjBhODEwNTQ0NjhlNDkyYmQ5NWQyNzIuLjk4NDg0Y2I4Y2JiOGQzY2NiNDJh
ODJkM2ZlMDJmYjIyNjQyMWM2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0zMjUsNyArMzI1LDggQEAgdm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHBy
cEJhY2tlbmQKICAgICBpZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250ZW5kID0gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJhY2tlbmQsIFZlY3RvcjxTdHJpbmc+
KCksIElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSwgbV9zb3VyY2UtPmlkYkRhdGFiYXNl
KCkuZ2V0KCkpOworICAgIGludDY0X3QgdHJhbnNhY3Rpb25JZCA9IElEQkRhdGFiYXNlOjpuZXh0
VHJhbnNhY3Rpb25JZCgpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rp
b25JZCwgYmFja2VuZCwgVmVjdG9yPFN0cmluZz4oKSwgSURCVHJhbnNhY3Rpb246OlZFUlNJT05f
Q0hBTkdFLCBtX3NvdXJjZS0+aWRiRGF0YWJhc2UoKS5nZXQoKSk7CiAgICAgYmFja2VuZC0+c2V0
Q2FsbGJhY2tzKGZyb250ZW5kLmdldCgpKTsKICAgICBtX3RyYW5zYWN0aW9uID0gZnJvbnRlbmQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCA3YWIzOGU5YzNlYTk5YzNlZmJjYmM0NTVkMGI3ZDc2ZWVlZDJkNmRkLi44
MzdkNTQ2YTdjZmYwYzBmZjFkMTI0NGIxNmZlNzM5NmM3NDdlZjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00NCwx
NSArNDQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlRyYW5z
YWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5k
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rpb246
Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4g
SURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBp
bnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFj
a2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0
aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKIHsKICAgICBJREJPcGVuREJSZXF1ZXN0
KiBvcGVuREJSZXF1ZXN0ID0gMDsKLSAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIGJhY2tlbmQs
IG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KTsKKyAgICByZXR1cm4g
Y3JlYXRlKGNvbnRleHQsIGlkLCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwg
b3BlbkRCUmVxdWVzdCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5z
YWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJE
YXRhYmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCitQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGludDY0X3QgaWQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVO
YW1lcywgSURCVHJhbnNhY3Rpb246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVu
REJSZXF1ZXN0KiBvcGVuREJSZXF1ZXN0KQogewotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQs
IG9iamVjdFN0b3JlTmFtZXMsIG1vZGUsIGRiLCBvcGVuREJSZXF1ZXN0KSkpOworICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9u
KGNvbnRleHQsIGlkLCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRC
UmVxdWVzdCkpKTsKICAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0
dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KQEAgLTg4LDkgKzg4LDEwIEBAIGNvbnN0IEF0
b21pY1N0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGVMZWdhY3koKQogfQogCiAK
LUlEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9u
OjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVx
dWVzdCkKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFt
ZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYiwgSURCT3BlbkRC
UmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9iYWNrZW5kKGJhY2tlbmQpCisgICAgLCBtX2lkKGlkKQogICAgICwgbV9k
YXRhYmFzZShkYikKICAgICAsIG1fb2JqZWN0U3RvcmVOYW1lcyhvYmplY3RTdG9yZU5hbWVzKQog
ICAgICwgbV9vcGVuREJSZXF1ZXN0KG9wZW5EQlJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA0YzZhMDY5NWY4ZGYw
MzJjNTVkZmYxNzAwOTYwM2M0ZTI5NDgyZDBhLi5iNWFjMGMzODU3M2UzYWY4YjNlMmE2MDhlMTgy
OGQyZWY1NDU0ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBWRVJT
SU9OX0NIQU5HRSA9IDIKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmpl
Y3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBpbnQ2NF90LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJE
YXRhYmFzZSopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFt
ZXMsIE1vZGUsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRCUmVxdWVzdCopOwogICAgIHZpcnR1YWwg
fklEQlRyYW5zYWN0aW9uKCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2Rl
UmVhZE9ubHkoKTsKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIG1vZGVUb1N0cmluZyhNb2RlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGJhY2tlbmQoKSBjb25zdDsKKyAgICBpbnQ2
NF90IGlkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gQWN0aXZlOyB9CiAgICAgYm9vbCBpc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZSA9PSBGaW5pc2hlZDsgfQogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kZSA9PSBSRUFEX09OTFk7IH0KQEAgLTEyMiw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgUmVmQ291bnRlZDxJREJUcmFuc2FjdGlvbkNhbGxiYWNrcz46OmRlcmVmOwogCiBwcml2
YXRlOgotICAgIElEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiwgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJPcGVuREJSZXF1ZXN0Kik7CisgICAgSURCVHJhbnNh
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludDY0X3QsIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBNb2RlLCBJ
REJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVlc3QqKTsKIAogICAgIHZvaWQgZW5xdWV1ZUV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsKQEAgLTE0
Myw3ICsxNDQsOSBAQCBwcml2YXRlOgogICAgICAgICBGaW5pc2hlZCwgLy8gTm8gbW9yZSBldmVu
dHMgd2lsbCBmaXJlIGFuZCBubyBuZXcgcmVxdWVzdHMgbWF5IGJlIGZpbGVkLgogICAgIH07CiAK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gdGhlIGJhY2tlbmQgd2hlbiB0aGUg
YmFja2VuZCBpcyBmdWxseSBmbGF0dGVuZWQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05OTc3NAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+IG1fYmFja2VuZDsKKyAgICBpbnQ2NF90IG1faWQ7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNl
PiBtX2RhdGFiYXNlOwogICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IG1fb2JqZWN0U3RvcmVOYW1l
czsKICAgICBJREJPcGVuREJSZXF1ZXN0KiBtX29wZW5EQlJlcXVlc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176585</attachid>
            <date>2012-11-28 15:09:02 -0800</date>
            <delta_ts>2012-11-28 15:43:21 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102732-20121128150637.patch</filename>
            <type>text/plain</type>
            <size>11139</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzM4MDNlNDVkZTJkZWJj
OWRmNjY3ZWU5MTkyZDYxMDlkYWJlMzdiZS4uMDZmYWM5ZTBkOWFhOWVkYTE4ZmYyOWYxNzA3NGI1
YjA2MzE2NWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTExLTI3ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IENo
YW5nZSBmcm9udGVuZCB0byBjYWxsIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Y3JlYXRl
VHJhbnNhY3Rpb24oKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAyNzMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAg
ICBVc2UgdGhlIG5ldyBjcmVhdGVUcmFuc2FjdGlvbiwgbm93IHRoYXQgaXQgaGFzIGJlZW4gc3R1
YmJlZAorICAgICAgICBvdXQuIFRoaXMgaXMgcGFydCAyIG9mIDMgb2YgYSByZWZhY3Rvci4gU2Vl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3MzMg
Zm9yIHBhcnQgMy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXMgdGhpcyByZWZhY3RvciBzaW1w
bHkga2VlcHMgYW5kIHByb3BhZ2F0ZXMgYQorICAgICAgICBjb3VudGVyIHRoYXQgaXMgY3VycmVu
dGx5IHVudXNlZC4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuZXh0VHJhbnNhY3Rpb25JZCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp0cmFuc2Fj
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAg
ICAgKElEQkRhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFk
ZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bi5oOgorICAgICAgICAoSURCVHJhbnNhY3Rpb24pOgorCiAyMDEyLTExLTI4ICBaZW5vIEFsYmlz
c2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV2luXSBFbmFibGUgdXNhZ2Ug
b2YgUVRXRUJLSVRfUExVR0lOX1BBVEguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggNjBmNzcxZmU5MGUxNTlhOTdkNTU5MzI5NGQ5
YjE1ODc0NjM3Mzk5MS4uZTc5OWMwZGIyZWNhYWI1YWRjNGYzYmUyNzdhNjI2MjRmNGZmNmFjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNw
cApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzQsNiArNzYsMTQgQEAgSURCRGF0YWJhc2U6On5JREJEYXRhYmFz
ZSgpCiAgICAgY2xvc2UoKTsKIH0KIAoraW50NjRfdCBJREJEYXRhYmFzZTo6bmV4dFRyYW5zYWN0
aW9uSWQoKQoreworICAgIC8vIE9ubHkga2VlcCBhIDMyLWJpdCBjb3VudGVyIHRvIGFsbG93IHBv
cnRzIHRvIHVzZSB0aGUgb3RoZXIgMzIKKyAgICAvLyBiaXRzIG9mIHRoZSBpZC4KKyAgICBBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoaW50LCBjdXJyZW50VHJhbnNhY3Rpb25JZCA9IDApOwor
ICAgIHJldHVybiBhdG9taWNJbmNyZW1lbnQoJmN1cnJlbnRUcmFuc2FjdGlvbklkKTsKK30KKwog
dm9pZCBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb25DcmVhdGVkKElEQlRyYW5zYWN0aW9uKiB0cmFu
c2FjdGlvbikKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwpAQCAtMjMwLDEyICsyNDAsMTQg
QEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICAvLyBjYW4gYmUgcXVldWVkIGFnYWluc3Qg
dGhlIHRyYW5zYWN0aW9uIGF0IGFueSBwb2ludC4gVGhleSB3aWxsIHN0YXJ0IGV4ZWN1dGluZyBh
cyBzb29uIGFzIHRoZQogICAgIC8vIGFwcHJvcHJpYXRlIGxvY2tzIGhhdmUgYmVlbiBhY3F1aXJl
ZC4KICAgICAvLyBBbHNvIG5vdGUgdGhhdCBlYWNoIGJhY2tlbmQgb2JqZWN0IGNvcnJlc3BvbmRz
IHRvIGV4YWN0bHkgb25lIElEQlRyYW5zYWN0aW9uIG9iamVjdC4KLSAgICBSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBtX2JhY2tlbmQt
PnRyYW5zYWN0aW9uKG9iamVjdFN0b3JlSWRzLCBtb2RlKTsKKyAgICBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQgPSBuZXh0VHJhbnNhY3Rpb25JZCgpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9uQmFja2VuZCA9IG1fYmFja2VuZC0+Y3JlYXRlVHJh
bnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgb2JqZWN0U3RvcmVJZHMsIG1vZGUpOwogICAgIGlmICgh
dHJhbnNhY3Rpb25CYWNrZW5kKSB7CiAgICAgICAgIEFTU0VSVChlYyk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSURC
VHJhbnNhY3Rpb246OmNyZWF0ZShjb250ZXh0LCB0cmFuc2FjdGlvbkJhY2tlbmQsIHNjb3BlLCBt
b2RlLCB0aGlzKTsKKworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRyYW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9u
QmFja2VuZCwgc2NvcGUsIG1vZGUsIHRoaXMpOwogICAgIHRyYW5zYWN0aW9uQmFja2VuZC0+c2V0
Q2FsbGJhY2tzKHRyYW5zYWN0aW9uLmdldCgpKTsKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVs
ZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmgKaW5kZXggYjc4OTcxYjEyMDQ2ODkyNTgwMDY3NWIwMTA5NDhjMGQyOWFmYTU2OS4uYThh
Yjk0ZDk0OTNiZGU4M2JiYTc5ODA0YjQ1MDBhNTgwOGI0NWRiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC05OCw2ICs5OCw4IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbmRPYmplY3RTdG9yZUlkKG5hbWUpICE9IElEQk9iamVj
dFN0b3JlTWV0YWRhdGE6OkludmFsaWRJZDsKICAgICB9CiAKKyAgICBzdGF0aWMgaW50NjRfdCBu
ZXh0VHJhbnNhY3Rpb25JZCgpOworCiAgICAgdXNpbmcgUmVmQ291bnRlZDxJREJEYXRhYmFzZT46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPElEQkRhdGFiYXNlPjo6ZGVyZWY7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5j
cHAKaW5kZXggYjIzOTAxNjE5YmNhM2ExMDlhZmE2ZDI1YThhOGQ3ZTVlZjc4MjRjYi4uNTUxZDBk
ZDA5M2JhN2NlMGZkMDY4M2MzNWFiNTAxMTdjMjNlMTUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAgLTg5LDcg
Kzg5LDggQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCBv
bGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQlRyYW5zYWMKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tz
LT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzID0g
MDsKIAotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gZnJvbnRlbmQgPSBJREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhbnNhY3Rpb25CYWNrZW5kLCBW
ZWN0b3I8U3RyaW5nPigpLCBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFOR0UsIGlkYkRhdGFi
YXNlLmdldCgpLCB0aGlzKTsKKyAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFz
ZTo6bmV4dFRyYW5zYWN0aW9uSWQoKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGZyb250
ZW5kID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRy
YW5zYWN0aW9uSWQsIHRyYW5zYWN0aW9uQmFja2VuZCwgVmVjdG9yPFN0cmluZz4oKSwgSURCVHJh
bnNhY3Rpb246OlZFUlNJT05fQ0hBTkdFLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcyk7CiAgICAg
dHJhbnNhY3Rpb25CYWNrZW5kLT5zZXRDYWxsYmFja3MoZnJvbnRlbmQuZ2V0KCkpOwogICAgIG1f
dHJhbnNhY3Rpb24gPSBmcm9udGVuZDsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlk
YkRhdGFiYXNlLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggN2FiMzhlOWMzZWE5OWMzZWZiY2JjNDU1
ZDBiN2Q3NmVlZWQyZDZkZC4uODM3ZDU0NmE3Y2ZmMGMwZmYxZDEyNDRiMTZmZTczOTZjNzQ3ZWYw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcApAQCAtNDQsMTUgKzQ0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9iamVjdFN0b3JlTmFt
ZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRhdGFiYXNlKiBkYikKK1Bhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9y
ZU5hbWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIpCiB7CiAg
ICAgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCA9IDA7Ci0gICAgcmV0dXJuIGNyZWF0
ZShjb250ZXh0LCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVx
dWVzdCk7CisgICAgcmV0dXJuIGNyZWF0ZShjb250ZXh0LCBpZCwgYmFja2VuZCwgb2JqZWN0U3Rv
cmVOYW1lcywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpOwogfQogCi1QYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNr
ZW5kLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgSURCVHJhbnNhY3Rp
b246Ok1vZGUgbW9kZSwgSURCRGF0YWJhc2UqIGRiLCBJREJPcGVuREJSZXF1ZXN0KiBvcGVuREJS
ZXF1ZXN0KQorUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQ2NF90IGlkLCBQYXNzUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIElEQlRyYW5zYWN0aW9uOjpNb2RlIG1vZGUsIElEQkRh
dGFiYXNlKiBkYiwgSURCT3BlbkRCUmVxdWVzdCogb3BlbkRCUmVxdWVzdCkKIHsKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlv
bihjb250ZXh0LCBiYWNrZW5kLCBvYmplY3RTdG9yZU5hbWVzLCBtb2RlLCBkYiwgb3BlbkRCUmVx
dWVzdCkpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVm
KG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBpZCwgYmFja2VuZCwgb2JqZWN0U3RvcmVOYW1l
cywgbW9kZSwgZGIsIG9wZW5EQlJlcXVlc3QpKSk7CiAgICAgdHJhbnNhY3Rpb24tPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiB0cmFuc2FjdGlvbi5yZWxlYXNlKCk7CiB9CkBAIC04OCw5
ICs4OCwxMCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZFdy
aXRlTGVnYWN5KCkKIH0KIAogCi1JREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RTdG9yZU5h
bWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRhYmFzZSogZGIsIElEQk9wZW5E
QlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCitJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50NjRfdCBpZCwgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvYmplY3RTdG9yZU5hbWVzLCBJREJUcmFuc2FjdGlvbjo6TW9kZSBtb2RlLCBJREJEYXRh
YmFzZSogZGIsIElEQk9wZW5EQlJlcXVlc3QqIG9wZW5EQlJlcXVlc3QpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fYmFja2VuZChiYWNrZW5kKQorICAgICwg
bV9pZChpZCkKICAgICAsIG1fZGF0YWJhc2UoZGIpCiAgICAgLCBtX29iamVjdFN0b3JlTmFtZXMo
b2JqZWN0U3RvcmVOYW1lcykKICAgICAsIG1fb3BlbkRCUmVxdWVzdChvcGVuREJSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
aW5kZXggNGM2YTA2OTVmOGRmMDMyYzU1ZGZmMTcwMDk2MDNjNGUyOTQ4MmQwYS4uNmE5NzBjNjM4
ZjFlYTU1MWQwNGZmZTg3YTNhOGIyNWZjZmI2MDNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC01Niw4ICs1Niw4IEBAIHB1
YmxpYzoKICAgICAgICAgVkVSU0lPTl9DSEFOR0UgPSAyCiAgICAgfTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIG9iamVjdFN0b3JlTmFtZXMsIE1vZGUsIElEQkRhdGFiYXNlKik7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3RvcmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqLCBJREJP
cGVuREJSZXF1ZXN0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb24+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb2JqZWN0U3Rv
cmVOYW1lcywgTW9kZSwgSURCRGF0YWJhc2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQ2NF90LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvYmplY3RTdG9yZU5hbWVzLCBNb2RlLCBJREJEYXRhYmFzZSosIElEQk9wZW5EQlJlcXVl
c3QqKTsKICAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpOwogCiAgICAgc3RhdGljIGNvbnN0
IEF0b21pY1N0cmluZyYgbW9kZVJlYWRPbmx5KCk7CkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtb2RlVG9TdHJpbmcoTW9kZSwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiBiYWNrZW5k
KCkgY29uc3Q7CisgICAgaW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBBY3RpdmU7IH0KICAgICBi
b29sIGlzRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IEZpbmlzaGVkOyB9CiAg
ICAgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlID09IFJFQURfT05MWTsg
fQpAQCAtMTIyLDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQlRy
YW5zYWN0aW9uQ2FsbGJhY2tzPjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBNb2RlLCBJREJEYXRhYmFzZSos
IElEQk9wZW5EQlJlcXVlc3QqKTsKKyAgICBJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgaW50NjRfdCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2U+LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIE1vZGUsIElEQkRhdGFiYXNlKiwgSURCT3BlbkRC
UmVxdWVzdCopOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwog
ICAgIHZvaWQgY2xvc2VPcGVuQ3Vyc29ycygpOwpAQCAtMTQzLDcgKzE0NCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIEZpbmlzaGVkLCAvLyBObyBtb3JlIGV2ZW50cyB3aWxsIGZpcmUgYW5kIG5vIG5l
dyByZXF1ZXN0cyBtYXkgYmUgZmlsZWQuCiAgICAgfTsKIAorICAgIC8vIEZJWE1FOiBSZW1vdmUg
cmVmZXJlbmNlcyB0byB0aGUgYmFja2VuZCB3aGVuIHRoZSBiYWNrZW5kIGlzIGZ1bGx5IGZsYXR0
ZW5lZDogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5Nzc0CiAgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOworICAgIGlu
dDY0X3QgbV9pZDsKICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IG1fZGF0YWJhc2U7CiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4gbV9vYmplY3RTdG9yZU5hbWVzOwogICAgIElEQk9wZW5EQlJlcXVl
c3QqIG1fb3BlbkRCUmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkRhdGFiYXNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IGQ2MzRjMzdjY2NiNTVmOTUyZjVhZTkwMTAxNjBk
MDY4MmM5YTRkZDMuLjYyMjQ2NWRlNDE0OWE5YTk0MzQyNTY3NDUwN2E4OTExNjcxYTQwMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkRhdGFiYXNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRGF0YWJhc2VJbXBsLmNw
cApAQCAtODYsNyArODYsNiBAQCBXZWJJREJUcmFuc2FjdGlvbiogV2ViSURCRGF0YWJhc2VJbXBs
OjpjcmVhdGVUcmFuc2FjdGlvbihsb25nIGxvbmcgaWQsIGNvbnN0IFdlYgogICAgIHJldHVybiBu
ZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKHRyYW5zYWN0aW9uKTsKIH0KIAotLy8gRklYTUU6IFJl
bW92ZSB0aGlzIGFzIHBhcnQgb2YgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMjczMy4KIFdlYklEQlRyYW5zYWN0aW9uKiBXZWJJREJEYXRhYmFzZUltcGw6OnRyYW5z
YWN0aW9uKGNvbnN0IFdlYlZlY3Rvcjxsb25nIGxvbmc+JiBvYmplY3RTdG9yZUlkcywgdW5zaWdu
ZWQgc2hvcnQgbW9kZSkKIHsKICAgICBWZWN0b3I8aW50NjRfdD4gb2JqZWN0U3RvcmVJZExpc3Qo
b2JqZWN0U3RvcmVJZHMuc2l6ZSgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>