

USDC + USDT = 80% of global stablecoin market capitalization. Here,
our sample represents more than 90% of the stablecoin market
capitalization.
Models
We estimate the following local projection model :
\[
Y_{i,t+h}-Y_{i,t-1}= \alpha_i + \beta^h X_t + \gamma Z_t + \mu_{i,t}
\] Where \(Y\) is the
log-difference of stablecoin market capitalization, \(\alpha_i\) is an individual FE, and \(X_t\) is our index of speech CBDC-related
sentiment/stance. \(Z_t\) are control
variables representing the VIX and the GPRD and their lags, and dummies
representing Terra-Luna and FTX crashes. We include individual (\(\alpha_i\)) fixed-effects.
Note : we take the 95% interval confidences for all estimations.
Standard errors are heteroskedasticity robusts (clusterized by
stablecoin).
Daily
Sentiment / Stance


In addition, we can decompose the market capitalization effect on two
effects : the price effect, and the supply effect. We retrieve both
price and supply from Artemis.xyz.


ECB vs other


LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCnBhdGggPC0gIkM6L3VzZXJzL2ZrcmF1cy9EZXNrdG9wL2FydGVtaXNfZGF0YS54bHN4Ig0KDQojIDEpIEZvcmNlciBsJ2ltcG9ydCBkZSBUT1VURVMgbGVzIGNvbG9ubmVzIChyYW5nZSBsYXJnZSkgZXQgdG91dCBsaXJlIGVuIHRleHRlDQoNCg0KYXJ0ZW1pc19wcmljZV9yYXcgPC0gcmVhZF9leGNlbCgNCiAgcGF0aCwNCiAgc2hlZXQgPSAiUFJJQ0UiLA0KICByYW5nZSA9ICJBMTpDTjM5NjYiLCAgICAgICAgDQogIGNvbF90eXBlcyA9ICJ0ZXh0IiwNCiAgLm5hbWVfcmVwYWlyID0gInVuaXF1ZSIgICAgICANCikNCg0KYXJ0ZW1pc19zdXBwbHlfcmF3IDwtIHJlYWRfZXhjZWwoDQogIHBhdGgsDQogIHNoZWV0ID0gIlNVUFBMWSIsDQogIHJhbmdlID0gIkExOkNOMzk2NiIsICAgICAgICANCiAgY29sX3R5cGVzID0gInRleHQiLA0KICAubmFtZV9yZXBhaXIgPSAidW5pcXVlIiAgICAgIA0KKQ0KDQphcnRlbWlzX3ZvbHVtZV9yYXcgPC0gcmVhZF9leGNlbCgNCiAgcGF0aCwNCiAgc2hlZXQgPSAiVk9MVU1FIiwNCiAgcmFuZ2UgPSAiQTE6Q04zOTY2IiwgICAgICAgDQogIGNvbF90eXBlcyA9ICJ0ZXh0IiwNCiAgLm5hbWVfcmVwYWlyID0gInVuaXF1ZSIgICAgICANCikNCg0KDQoNCg0KDQphcnRlbWlzX3ByaWNlIDwtIGFydGVtaXNfcHJpY2VfcmF3ICU+JQ0KICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgfiBuYV9pZihzdHJfdHJpbSgueCksICIiKSkpICU+JQ0KICBtdXRhdGUoDQogICAgRGF0ZVRpbWUgPSBhcy5EYXRlKGFzLm51bWVyaWMoRGF0ZVRpbWUpLCBvcmlnaW4gPSAiMTg5OS0xMi0zMCIpDQogICkgJT4lDQogIG11dGF0ZShhY3Jvc3MoDQogICAgLWMoRGF0ZVRpbWUpLA0KICAgIH4gcmVhZHI6OnBhcnNlX251bWJlcigueCwgbG9jYWxlID0gcmVhZHI6OmxvY2FsZShkZWNpbWFsX21hcms9Ii4iLCBncm91cGluZ19tYXJrPSIsIikpKSklPiUNCiAgICAgIHBpdm90X2xvbmdlcigtRGF0ZVRpbWUsIG5hbWVzX3RvID0gInN0YWJsZWNvaW4iLCB2YWx1ZXNfdG8gPSAicHJpY2UiKSU+JQ0KICBtdXRhdGUoc3RhYmxlY29pbiA9IHN0YWJsZWNvaW4gJT4lc3RyX3JlbW92ZSggIlxccyotXFxzKlByaWNlXFxzKihcXChcXCRcXCkpP1xccyokIikpDQoNCg0KYXJ0ZW1pc19zdXBwbHkgPC0gYXJ0ZW1pc19zdXBwbHlfcmF3ICU+JQ0KICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgfiBuYV9pZihzdHJfdHJpbSgueCksICIiKSkpICU+JQ0KICBtdXRhdGUoDQogICAgRGF0ZVRpbWUgPSBhcy5EYXRlKGFzLm51bWVyaWMoRGF0ZVRpbWUpLCBvcmlnaW4gPSAiMTg5OS0xMi0zMCIpDQogICkgJT4lDQogIG11dGF0ZShhY3Jvc3MoDQogICAgLWMoRGF0ZVRpbWUpLA0KICAgIH4gcmVhZHI6OnBhcnNlX251bWJlcigueCwgbG9jYWxlID0gcmVhZHI6OmxvY2FsZShkZWNpbWFsX21hcms9Ii4iLCBncm91cGluZ19tYXJrPSIsIikpKSklPiUNCiAgICAgIHBpdm90X2xvbmdlcigtRGF0ZVRpbWUsIG5hbWVzX3RvID0gInN0YWJsZWNvaW4iLCB2YWx1ZXNfdG8gPSAic3VwcGx5IiklPiUNCiAgbXV0YXRlKHN0YWJsZWNvaW4gPSBzdGFibGVjb2luICU+JXN0cl9yZW1vdmUoICJcXHMqLVxccypTdGFibGVjb2luIFN1cHBseVxccyooXFwoXFwkXFwpKT9cXHMqJCIpKQ0KICANCg0KYXJ0ZW1pc192b2x1bWUgPC0gYXJ0ZW1pc192b2x1bWVfcmF3ICU+JQ0KICBtdXRhdGUoYWNyb3NzKGV2ZXJ5dGhpbmcoKSwgfiBuYV9pZihzdHJfdHJpbSgueCksICIiKSkpICU+JQ0KICBtdXRhdGUoDQogICAgRGF0ZVRpbWUgPSBhcy5EYXRlKGFzLm51bWVyaWMoRGF0ZVRpbWUpLCBvcmlnaW4gPSAiMTg5OS0xMi0zMCIpDQogICkgJT4lDQogIG11dGF0ZShhY3Jvc3MoDQogICAgLWMoRGF0ZVRpbWUpLA0KICAgIH4gcmVhZHI6OnBhcnNlX251bWJlcigueCwgbG9jYWxlID0gcmVhZHI6OmxvY2FsZShkZWNpbWFsX21hcms9Ii4iLCBncm91cGluZ19tYXJrPSIsIikpKSklPiUNCiAgICAgIHBpdm90X2xvbmdlcigtRGF0ZVRpbWUsIG5hbWVzX3RvID0gInN0YWJsZWNvaW4iLCB2YWx1ZXNfdG8gPSAidm9sdW1lIiklPiUNCiAgbXV0YXRlKHN0YWJsZWNvaW4gPSBzdGFibGVjb2luICU+JXN0cl9yZW1vdmUoICJcXHMqLVxccypTdGFibGVjb2luIFRyYW5zYWN0aW9uIFZvbHVtZVxccyooXFwoXFwkXFwpKT9cXHMqJCIpKQ0KDQphcnRlbWlzIDwtIGFydGVtaXNfcHJpY2UgJT4lDQogIGxlZnRfam9pbihhcnRlbWlzX3N1cHBseSwgYnk9Yygic3RhYmxlY29pbiIsICJEYXRlVGltZSIpKSU+JQ0KICBsZWZ0X2pvaW4oYXJ0ZW1pc192b2x1bWUsIGJ5PWMoInN0YWJsZWNvaW4iLCAiRGF0ZVRpbWUiKSklPiUNCiAgZmlsdGVyKCFwcmljZSA9PSAwLCAhc3VwcGx5ID09IDAsICF2b2x1bWU8MTAwMDApDQoNCg0KDQoNCmN1dG9mZiA8LSBhcy5EYXRlKCIyMDIyLTAxLTAxIikNCg0KbGlzdCA8LSBhcnRlbWlzJT4lDQogIGdyb3VwX2J5KHN0YWJsZWNvaW4pICU+JQ0KICBmaWx0ZXIoDQogICAgYW55KERhdGVUaW1lIDwgY3V0b2ZmICYgIWlzLm5hKHN1cHBseSksICAgICAgbmEucm0gPSBUUlVFKSAmDQogICAgYW55KERhdGVUaW1lIDwgY3V0b2ZmICYgIWlzLm5hKHByaWNlKSwgICAgICAgbmEucm0gPSBUUlVFKQ0KICApICU+JQ0KICBtdXRhdGUobWFya2V0X2NhcCA9IHByaWNlICogc3VwcGx5KSU+JQ0KDQogIHN1bW1hcml6ZShtYXggPSBtYXgobWFya2V0X2NhcCkpJT4lDQogIGFycmFuZ2UoLW1heCklPiUNCiAgaGVhZCgxMCkNCg0KDQoNCmRhdGFiYXNlX2FydGVtaXM8LSBhcnRlbWlzICU+JQ0KICBmaWx0ZXIoc3RhYmxlY29pbiAlaW4lIGxpc3Qkc3RhYmxlY29pbiklPiUNCiAgDQogIHJlbmFtZSgiRGF0ZSI9IkRhdGVUaW1lIiklPiUNCiAgbXV0YXRlKG1hcmtldF9jYXAgPSBzdXBwbHkgKiBwcmljZSkNCg0KYGBgDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KZ2dwbG90KGRhdGFiYXNlX2FydGVtaXMsIGFlcyh4PURhdGUsIHk9bWFya2V0X2NhcCkpKw0KICBnZW9tX2xpbmUoKStmYWNldF93cmFwKH5zdGFibGVjb2luLCBuY29sPTUsIHNjYWxlcz0iZnJlZV95IikrDQogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlPTkwKQ0KICAgIA0KICApDQpgYGANCg0KDQpgYGB7cn0NCkdQUiA8LSByZWFkeGw6OnJlYWRfZXhjZWwoIkM6L3VzZXJzL2ZrcmF1cy9EZXNrdG9wL0FydGljbGVzL2VmZmVjdHMgb2YgQ0Igc3BlZWNoZXMgb24gc3RhYmxlY29pbnMvMjAyNS9HUFIueGxzeCIpJT4lDQogIG11dGF0ZShkYXRlPWFzLkRhdGUoZGF0ZSkpJT4lDQogIHNlbGVjdCgtYyhEQVkpKQ0KcmVxdWlyZShxdWFudG1vZCkNClZJWCA8LSBnZXRTeW1ib2xzKCJeVklYIiwgc3JjPSJ5YWhvbyIsIGF1dG8uYXNzaWduID0gRkFMU0UpIA0Kdml4X2RhdGEgPC0gZGF0YS5mcmFtZShkYXRlID0gaW5kZXgoVklYKSwgY29yZWRhdGEoVklYKSklPiUNCiAgZHBseXI6OnJlbmFtZSgiVklYX2Nsb3NlIiA9IGBWSVguQ2xvc2VgKSU+JQ0KICBzZWxlY3QoZGF0ZSwgVklYX2Nsb3NlKQ0KDQpkYXRhX2FydGVtaXMgPC1kYXRhYmFzZV9hcnRlbWlzJT4lDQogIG5hLm9taXQoKSU+JQ0KICBsZWZ0X2pvaW4oZGF0YWJhc2VfZGFpbHksIGJ5PWMoIkRhdGUiPSJkYXRlIikpJT4lDQogIGxlZnRfam9pbihHUFIsIGJ5PWMoIkRhdGUiPSJkYXRlIikpJT4lDQogIGxlZnRfam9pbih2aXhfZGF0YSwgYnk9YygiRGF0ZSI9ImRhdGUiKSklPiUNCiAgYXJyYW5nZShzdGFibGVjb2luLCBEYXRlKSU+JQ0KICBtdXRhdGUoRlRYID0gaWZlbHNlKERhdGUgPiBhcy5EYXRlKCIyMDIyLTExLTAxIikgJiBEYXRlIDwgYXMuRGF0ZSgiMjAyMy0wMS0wMSIpLDEsMCApKSU+JQ0KICBtdXRhdGUoTHVuYSA9IGlmZWxzZShEYXRlID4gYXMuRGF0ZSgiMjAyMi0wNS0wMSIpICYgRGF0ZSA8IGFzLkRhdGUoIjIwMjItMDctMDEiKSwxLDAgKSklPiUNCiAgDQogIG11dGF0ZShhY3Jvc3MoLURhdGUsIH4gdGlkeXI6OnJlcGxhY2VfbmEoLngsIDApKSkgJT4lICMgcmVtb3ZlIHRoaXMgdG8gcmVwbGFjZSAwIHdpdGggTkEgd2hlbiB0aGVyZSdzIG5vIHNwZWVjaA0KICBncm91cF9ieShzdGFibGVjb2luKSU+JQ0KICBtdXRhdGUobG9nX3N1cHBseSA9IGxvZyhzdXBwbHkpLCBsb2dfbWt0Y2FwID0gbG9nKG1hcmtldF9jYXApKSU+JQ0KICBmaWx0ZXIoRGF0ZSA8IGFzLkRhdGUoIjIwMjUtMDctMDEiKSklPiUNCg0KICBqYW5pdG9yOjpjbGVhbl9uYW1lcygpDQoNCmNvbG5hbWVzKGRhdGFfYXJ0ZW1pcyk8LSBjKA0KICAiZGF0ZSIsICJzdGFibGVjb2luIiwgInByaWNlIiwgInN1cHBseSIsICJ2b2x1bWUiLCAibWFya2V0X2NhcCIsICJzZW50aW1lbnQiLCAic3RhbmNlIiwgInN0YW5jZV9hdWVyIiwgDQogICJzcGVlY2hkYXkiLCAic2VudF9nZW5lcmFsIiwgInNlbl9yZXRhaWwiLCAic2VudF93aG9sZXNhbGUiLCAic3RhbmNlX2dlbmVyYWwiLCAic3RhbmNlX3JldGFpbCIsICJzdGFuY2Vfd2hvbGVzYWxlIiwgDQogICJzZW50X2ZlYXR1cmUiLCAic2VudF9wcm9jZXNzIiwgInNlbnRfcmlza2JlbmVmIiwgInN0YW5jZV9mZWF0dXJlIiwgInN0YW5jZV9wcm9jZXNzIiwgInN0YW5jZV9yaXNrYmVuZWYiLCANCiAgInNlbnRfZ2VuZXJhbF9mZWF0dXJlIiwgInNlbnRfZ2VuZXJhbF9wcm9jZXNzIiwgInNlbnRfZ2VuZXJhbF9yaXNrYmVuZWYiLCANCiAgInNlbnRfcmV0YWlsX2ZlYXR1cmUiLCAic2VudF9yZXRhaWxfcmlza2JlbmVmIiwgInNlbnRfd2hvbGVzYWxlX2ZlYXR1cmUiLA0KICAic2VudF9yZXRhaWxfcHJvY2VzcyIsICJzZW50X3dob2xlc2FsZV9yaXNrYmVuZWYiLCAic2VudF93aG9sZXNhbGVfcHJvY2VzcyIsDQogIA0KICAic3RhbmNlX2dlbmVyYWxfZmVhdHVyZSIsICJzdGFuY2VfZ2VuZXJhbF9wcm9jZXNzIiwgInN0YW5jZV9nZW5lcmFsX3Jpc2tiZW5lZiIsIA0KICAic3RhbmNlX3JldGFpbF9mZWF0dXJlIiwgInN0YW5jZV9yZXRhaWxfcmlza2JlbmVmIiwgInN0YW5jZV93aG9sZXNhbGVfZmVhdHVyZSIsDQogICJzdGFuY2VfcmV0YWlsX3Byb2Nlc3MiLCAic3RhbmNlX3dob2xlc2FsZV9yaXNrYmVuZWYiLCAic3RhbmNlX3dob2xlc2FsZV9wcm9jZXNzIiwNCiAgInNlbnRfZGV2ZWxvcGVkIiwgInNlbnRfZW1lcmdpbmciLCAic3RhbmNlX2RldmVsb3BlZCIsICJzdGFuY2VfZW1lcmdpbmciLCANCiAgDQogICJzZW50X25vbl9lY2JfZmVkX2JvaiIsICJzZW50X2VjYl9mZWRfYm9qIiwgDQogICJzdGFuY2Vfbm9uX2VjYl9mZWRfYm9qIiwgInN0YW5jZV9lY2JfZmVkX2JvaiIsDQogIA0KICANCiAgInNlbnRfbm9uX2VjYiIsICJzZW50X2VjYiIsICJzdGFuY2Vfbm9uX2VjYiIsICJzdGFuY2VfZWNiIiwgDQogIA0KICAic2VudF9pbXBfc3BlZWNoIiwgInN0YW5jZV9pbXBfc3BlZWNoIiwgDQogIA0KICAic2VudF9pbXBfZ2VuZXJhbCIsICJzZW50X2ltcF9yZXRhaWwiLCAic2VudF9pbXBfd2hvbGVzYWxlIiwNCiAgInN0YW5jZV9pbXBfZ2VuZXJhbCIsICJzdGFuY2VfaW1wX3JldGFpbCIsICJzdGFuY2VfaW1wX3dob2xlc2FsZSIsIA0KICANCiAgInNlbnRfaW1wX2ZlYXR1cmUiLCAic2VudF9pbXBfcHJvY2VzcyIsICJzZW50X2ltcF9yaXNrYmVuZWYiLA0KICAic3RhbmNlX2ltcF9mZWF0dXJlIiwgInN0YW5jZV9pbXBfcHJvY2VzcyIsICJzdGFuY2VfaW1wX3Jpc2tiZW5lZiIsIA0KICAic2VudF9pbXBfZmVhdHVyZV9nZW5lcmFsIiwgInNlbnRfaW1wX2ZlYXR1cmVfcmV0YWlsIiwgInNlbnRfaW1wX2ZlYXR1cmVfd2hvbGVzYWxlIiwNCiAgInNlbnRfaW1wX3Byb2Nlc3NfZ2VuZXJhbCIsICJzZW50X2ltcF9yaXNrYmVuZWZfZ2VuZXJhbCIsICJzZW50X2ltcF9yaXNrYmVuZWZfcmV0YWlsIiwgDQogICJzZW50X2ltcF9wcm9jZXNzX3JldGFpbCIsICJzZW50X2ltcF9wcm9jZXNzX3dob2xlc2FsZSIsICJzZW50X2ltcF9yaXNrYmVuZWZfd2hvbGVzYWxlIiwgDQogIA0KInN0YW5jZV9pbXBfZmVhdHVyZV9nZW5lcmFsIiwgInN0YW5jZV9pbXBfZmVhdHVyZV9yZXRhaWwiLCAic3RhbmNlX2ltcF9mZWF0dXJlX3dob2xlc2FsZSIsDQogICJzdGFuY2VfaW1wX3Byb2Nlc3NfZ2VuZXJhbCIsICJzdGFuY2VfaW1wX3Jpc2tiZW5lZl9nZW5lcmFsIiwgInN0YW5jZV9pbXBfcmlza2JlbmVmX3JldGFpbCIsIA0KICAic3RhbmNlX2ltcF9wcm9jZXNzX3JldGFpbCIsICJzdGFuY2VfaW1wX3Byb2Nlc3Nfd2hvbGVzYWxlIiwgInN0YW5jZV9pbXBfcmlza2JlbmVmX3dob2xlc2FsZSIsIA0KDQoic2VudF9pbXBfbm9uX2VjYiIsICJzZW50X2ltcF9lY2IiLCAic3RhbmNlX2ltcF9ub25fZWNiIiwgInN0YW5jZV9pbXBfZWNiIiwgDQoNCiJuMTBkIiwgImdwcmQiLCAiZ3ByZF9hY3QiLCAiZ3ByZF90aHJlYXQiLCAiZ3ByZF9tYTMwIiwgImdwcmRfbWE3IiwgDQoidml4IiwgImZ0eCIsICJsdW5hIiwgImxvZ19zdXBwbHkiLCAibG9nX21rdGNhcCINCiAgDQogIA0KICANCiAgDQogIA0KICANCiAgDQopDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICANCmBgYA0KDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KZ2dwbG90KGRhdGFfYXJ0ZW1pcywgYWVzKHggPSBkYXRlLCB5ID0gbWFya2V0X2NhcCwgZmlsbCA9IHN0YWJsZWNvaW4pKSArDQogIGdlb21fYXJlYSgpICsNCiAgbGFicyh4ID0gIiIsIHkgPSAiIiwgdGl0bGUgPSAiQ3VtdWxhdGVkIE1hcmtldCBDYXAiKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iKQ0KDQpgYGANClVTREMgKyBVU0RUID0gODAlIG9mIGdsb2JhbCBzdGFibGVjb2luIG1hcmtldCBjYXBpdGFsaXphdGlvbi4NCkhlcmUsIG91ciBzYW1wbGUgcmVwcmVzZW50cyBtb3JlIHRoYW4gOTAlIG9mIHRoZSBzdGFibGVjb2luIG1hcmtldCBjYXBpdGFsaXphdGlvbi4NCg0KDQpgYGB7ciwgaW5jbHVkZT1GQUxTRX0NCm1ha2VfaXJmX3Bsb3RfMiA8LSBmdW5jdGlvbihkYXRhLCB0aXRsZSA9IE5VTEwpIHsNCiAgZ2dwbG90KA0KICAgIGRhdGEsDQogICAgYWVzKA0KICAgICAgeCA9IGgsIHkgPSBpcmYsDQogICAgICB5bWluID0gbG93LCB5bWF4ID0gdXAsDQogICAgICBjb2xvciA9IHR5cGUsIGZpbGwgPSB0eXBlDQogICAgKQ0KICApICsNCiAgICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiKSArDQogICAgZ2VvbV9yaWJib24oYWxwaGEgPSAwLjMsIGNvbG9yID0gTkEpICsNCiAgICBnZW9tX2xpbmUobGluZXdpZHRoID0gMC43KSArDQogICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGNvbHNfdHlwZSkgKw0KICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvbHNfdHlwZSkgKw0KICAgIGxhYnMoDQogICAgICB4ID0gIkhvcml6b24gKHdlZWtzKSIsDQogICAgICB5ID0gIlJlc3BvbnNlIG9mIFN1cHBseSAobG9nKSIsDQogICAgICBjb2xvciA9IE5VTEwsIGZpbGwgPSBOVUxMLA0KICAgICAgdGl0bGUgPSB0aXRsZQ0KICAgICkgKw0KICAgIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTIpICsNCiAgICB0aGVtZSgNCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iLA0KICAgICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkNCiAgICApDQp9DQoNCmNvbHNfdHlwZSA8LSBjKA0KICAiU2VudGltZW50IiA9ICIjMWY3N2I0IiwgICMgYmxldQ0KICAiU3RhbmNlIiAgICA9ICIjZDYyNzI4IiwgICMgcm91Z2UNCiAgIlNlbnRpbWVudCAoQXVlcikiICAgICA9ICIjZDk1ZjAyIiAgICMgYXUgY2FzIG/DuSAoQXVlciBzZW50aW1lbnQgc2V1bCwgZXRjLikNCikNCg0Kc2hvY2tfdmFyIDwtIGMoInN0YW5jZV9hdWVyIiwgInN0YW5jZSIsICJzZW50aW1lbnQiLCAic2VudF9ub25fZWNiIiwgInNlbnRfZWNiIiwgInN0YW5jZV9ub25fZWNiIiwgInN0YW5jZV9lY2IiLCAic3RhbmNlICogdml4IiwgInN0YW5jZSAqIGdwcmQiKQ0KDQpwbG90X2xwIDwtIGZ1bmN0aW9uKGxwX21vZGVsLA0KICAgICAgICAgICAgICAgICAgICAuLi4sDQogICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiIiwNCiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwNCiAgICAgICAgICAgICAgICAgICAgY29uZi5sZXZlbCA9IDAuOTUsDQogICAgICAgICAgICAgICAgICAgIHZjb3YgPSAiSEMxIiwNCiAgICAgICAgICAgICAgICAgICAga2VlcF90ZXJtID0gTlVMTCkgew0KDQogICMgQWNjZXB0OiBwbG90X2xwKGxwMSkgT1IgcGxvdF9scChscDEsIGxwMiwgLi4uKSBPUiBwbG90X2xwKGxpc3QobHAxLCBscDIpKQ0KICBtb2RlbHMgPC0gbGlzdChscF9tb2RlbCwgLi4uKQ0KICBpZiAobGVuZ3RoKG1vZGVscykgPT0gMSAmJiBpcy5saXN0KG1vZGVsc1tbMV1dKSAmJiAhaW5oZXJpdHMobW9kZWxzW1sxXV1bWzFdXSwgImZpeGVzdCIpKSB7DQogICAgIyBJZiB1c2VyIHBhc3NlZCBhIHBsYWluIGxpc3Qgb2YgbW9kZWxzOiBwbG90X2xwKGxpc3QobHAxLCBscDIpKQ0KICAgIG1vZGVscyA8LSBtb2RlbHNbWzFdXQ0KICB9DQoNCiAgc3RvcGlmbm90KGxlbmd0aChtb2RlbHMpID4gMCkNCg0KICAjIHJlY3ljbGUgLyB2YWxpZGF0ZSB0eXBlIGxhYmVscw0KICBpZiAobGVuZ3RoKHR5cGUpID09IDEpIHR5cGUgPC0gcmVwKHR5cGUsIGxlbmd0aChtb2RlbHMpKQ0KICBpZiAobGVuZ3RoKHR5cGUpICE9IGxlbmd0aChtb2RlbHMpKSB7DQogICAgc3RvcCgiYHR5cGVgIG11c3QgaGF2ZSBsZW5ndGggMSBvciB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIG51bWJlciBvZiBMUCBtb2RlbHMuIikNCiAgfQ0KDQogICMgaGVscGVyOiBleHRyYWN0IGRmIGZvciBPTkUgbHAgb2JqZWN0DQogIG9uZV9scF90b19kZiA8LSBmdW5jdGlvbihvbmVfbHAsIG9uZV90eXBlKSB7DQogICAgc3RvcGlmbm90KGlzLmxpc3Qob25lX2xwKSwgbGVuZ3RoKG9uZV9scCkgPiAwKQ0KICAgIEggPC0gbGVuZ3RoKG9uZV9scCkgLSAxDQoNCiAgICBwdXJycjo6bWFwMl9kZnIoDQogICAgICBvbmVfbHAsDQogICAgICAwOkgsDQogICAgICB+ew0KICAgICAgICB0dCA8LSBicm9vbTo6dGlkeSgueCwgY29uZi5pbnQgPSBUUlVFLCBjb25mLmxldmVsID0gY29uZi5sZXZlbCwgdmNvdiA9IHZjb3YpDQoNCiAgICAgICAgc2hvY2tfdGVybSA8LSBpZiAoaXMubnVsbChrZWVwX3Rlcm0pKSB7DQogICAgICAgICAgdHQkdGVybVshdHQkdGVybSAlaW4lIGMoIihJbnRlcmNlcHQpIiwgIihpbnRlcmNlcHQpIiwgIkludGVyY2VwdCIpXVsxXQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIGtlZXBfdGVybQ0KICAgICAgICB9DQoNCiAgICAgICAgdHQgJT4lDQogICAgICAgICAgZHBseXI6OmZpbHRlciguZGF0YSR0ZXJtID09IHNob2NrX3Rlcm0pICU+JQ0KICAgICAgICAgIGRwbHlyOjp0cmFuc211dGUoDQogICAgICAgICAgICBoICAgPSAueSwNCiAgICAgICAgICAgIGlyZiA9IC5kYXRhJGVzdGltYXRlLA0KICAgICAgICAgICAgbG93ID0gLmRhdGEkY29uZi5sb3csDQogICAgICAgICAgICB1cCAgPSAuZGF0YSRjb25mLmhpZ2gsDQogICAgICAgICAgICB0ZXJtID0gLmRhdGEkdGVybSwNCiAgICAgICAgICAgIHR5cGUgPSBvbmVfdHlwZQ0KICAgICAgICAgICkNCiAgICAgIH0NCiAgICApDQogIH0NCg0KICBpcmZfZGYgPC0gcHVycnI6Om1hcDJfZGZyKG1vZGVscywgdHlwZSwgb25lX2xwX3RvX2RmKQ0KDQogIGdncGxvdCgNCiAgICBpcmZfZGYsDQogICAgYWVzKA0KICAgICAgeCA9IGgsIHkgPSBpcmYsDQogICAgICB5bWluID0gbG93LCB5bWF4ID0gdXAsDQogICAgICBjb2xvciA9IHR5cGUsIGZpbGwgPSB0eXBlDQogICAgKQ0KICApICsNCiAgICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBsaW5ldHlwZSA9ICJkYXNoZWQiKSArDQogICAgZ2VvbV9yaWJib24oYWxwaGEgPSAwLjMsIGNvbG9yID0gTkEpICsNCiAgICBnZW9tX2xpbmUobGluZXdpZHRoID0gMC43KSArDQogICAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGNvbHNfdHlwZSkgKw0KICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvbHNfdHlwZSkgKw0KICAgIGxhYnMoDQogICAgICB4ID0gIkhvcml6b24iLA0KICAgICAgeSA9ICJSZXNwb25zZSBvZiBTdXBwbHkgKGxvZykiLA0KICAgICAgY29sb3IgPSBOVUxMLCBmaWxsID0gTlVMTCwNCiAgICAgIHRpdGxlID0gdGl0bGUNCiAgICApICsNCiAgICB0aGVtZV9taW5pbWFsKGJhc2Vfc2l6ZSA9IDEyKSArDQogICAgdGhlbWUoDQogICAgICBsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwNCiAgICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpDQogICAgKQ0KfQ0KYGBgDQoNCg0KIyBNb2RlbHMNCldlIGVzdGltYXRlIHRoZSBmb2xsb3dpbmcgbG9jYWwgcHJvamVjdGlvbiBtb2RlbCA6DQoNCiQkDQpZX3tpLHQraH0tWV97aSx0LTF9PSBcYWxwaGFfaSArIFxiZXRhXmggIFhfdCArIFxnYW1tYSBaX3QgKyBcbXVfe2ksdH0NCiQkDQpXaGVyZSAkWSQgaXMgdGhlIGxvZy1kaWZmZXJlbmNlIG9mIHN0YWJsZWNvaW4gbWFya2V0IGNhcGl0YWxpemF0aW9uLCAkXGFscGhhX2kkIGlzIGFuIGluZGl2aWR1YWwgRkUsIGFuZCAkWF90JCBpcyBvdXIgaW5kZXggb2Ygc3BlZWNoIENCREMtcmVsYXRlZCBzZW50aW1lbnQvc3RhbmNlLiAkWl90JCBhcmUgY29udHJvbCB2YXJpYWJsZXMgcmVwcmVzZW50aW5nIHRoZSBWSVggYW5kIHRoZSBHUFJEIGFuZCB0aGVpciBsYWdzLCBhbmQgZHVtbWllcyByZXByZXNlbnRpbmcgVGVycmEtTHVuYSBhbmQgRlRYIGNyYXNoZXMuIFdlIGluY2x1ZGUgaW5kaXZpZHVhbCAoJFxhbHBoYV9pJCkgZml4ZWQtZWZmZWN0cy4gIA0KTm90ZSA6IHdlIHRha2UgdGhlIDk1JSBpbnRlcnZhbCBjb25maWRlbmNlcyBmb3IgYWxsIGVzdGltYXRpb25zLiBTdGFuZGFyZCBlcnJvcnMgYXJlIGhldGVyb3NrZWRhc3RpY2l0eSByb2J1c3RzIChjbHVzdGVyaXplZCBieSBzdGFibGVjb2luKS4NCg0KIyMgRGFpbHkNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KaCA9IDMwDQpscF9hdWVyIDwtIGZlb2xzKA0KICBmKGxvZ19ta3RjYXAsIDA6aCktIGwobG9nX21rdGNhcCwxKSB+IHN0YW5jZV9hdWVyICsgIGwoZ3ByZCwwOjEpK2wodml4LCAwOjEpK2x1bmErZnR4IHwgc3RhYmxlY29pbiwNCiAgZGF0YSA9IGRhdGFfYXJ0ZW1pcywgcGFuZWwuaWQ9Yygic3RhYmxlY29pbiIsICJkYXRlIikNCikNCg0KbHBfc2VudCA8LSBmZW9scygNCiAgZihsb2dfbWt0Y2FwLCAwOmgpLSBsKGxvZ19ta3RjYXAsMSkgfiBzZW50aW1lbnQrICBsKGdwcmQsMDoxKStsKHZpeCwgMDoxKStsdW5hK2Z0eCB8IHN0YWJsZWNvaW4sDQogIGRhdGEgPSBkYXRhX2FydGVtaXMsIHBhbmVsLmlkPWMoInN0YWJsZWNvaW4iLCAiZGF0ZSIpDQopDQoNCg0KbHBfc3RhbmNlPC0gZmVvbHMoDQogIGYobG9nX21rdGNhcCwgMDpoKS0gbChsb2dfbWt0Y2FwLCAxKSB+IHN0YW5jZSsgbChncHJkLDA6MSkrbCh2aXgsIDA6MSkrbHVuYStmdHggfCBzdGFibGVjb2luLA0KICBkYXRhID0gZGF0YV9hcnRlbWlzLCBwYW5lbC5pZD1jKCJzdGFibGVjb2luIiwgImRhdGUiKQ0KKQ0KDQoNCg0KYGBgDQojIyMgU2VudGltZW50IC8gU3RhbmNlDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCnBsb3RfbHAobHBfYXVlciwgdHlwZT0iU2VudGltZW50IChBdWVyKSIsIHRpdGxlPSJEYWlseSByZXNwb25zZSBvZiBNYXJrZXQgQ2FwaXRhbGl6YXRpb24gdG8gaW5jcmVhc2UgaW4gQXVlciAmIGFsLiAoMjAyMSkgc2VudGltZW50IikNCnBsb3RfbHAobHBfc2VudCwgbHBfc3RhbmNlLCB0eXBlPWMoIlNlbnRpbWVudCIsICJTdGFuY2UiKSwgdGl0bGU9IkRhaWx5IHJlc3BvbnNlIG9mIE1hcmtldCBDYXBpdGFsaXphdGlvbiB0byBpbmNyZWFzZSBpbiBzZW50aW1lbnQvc3RhbmNlIikNCg0KDQpgYGANCg0KDQoNCg0KDQoNCg0KDQoNCkluIGFkZGl0aW9uLCB3ZSBjYW4gZGVjb21wb3NlIHRoZSBtYXJrZXQgY2FwaXRhbGl6YXRpb24gZWZmZWN0IG9uIHR3byBlZmZlY3RzIDogdGhlIHByaWNlIGVmZmVjdCwgYW5kIHRoZSBzdXBwbHkgZWZmZWN0LiBXZSByZXRyaWV2ZSBib3RoIHByaWNlIGFuZCBzdXBwbHkgZnJvbSBBcnRlbWlzLnh5ei4gDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCBlY2hvPUZBTFNFfQ0KbHBfc2VudF9wIDwtIGZlb2xzKA0KICBmKHByaWNlLCAwOmgpLSBsKHByaWNlLDEpIH4gc2VudGltZW50ICsgIGwoZ3ByZCwwOjEpK2wodml4LCAwOjEpK2x1bmErZnR4IHwgc3RhYmxlY29pbiwNCiAgZGF0YSA9IGRhdGFfYXJ0ZW1pcywgcGFuZWwuaWQ9Yygic3RhYmxlY29pbiIsICJkYXRlIikNCikNCmxwX3NlbnRfcyA8LSBmZW9scygNCiAgZihsb2dfc3VwcGx5LCAwOmgpLSBsKGxvZ19zdXBwbHksMSkgfiBzZW50aW1lbnQrICBsKGdwcmQsMDoxKStsKHZpeCwgMDoxKStsdW5hK2Z0eCB8IHN0YWJsZWNvaW4sDQogIGRhdGEgPSBkYXRhX2FydGVtaXMsIHBhbmVsLmlkPWMoInN0YWJsZWNvaW4iLCAiZGF0ZSIpDQopDQoNCmxwX3N0YW5jZV9wICA8LSBmZW9scygNCiAgZihwcmljZSwgMDpoKS0gbChwcmljZSwxKSB+IHN0YW5jZSArICBsKGdwcmQsMDoxKStsKHZpeCwgMDoxKStsdW5hK2Z0eCB8IHN0YWJsZWNvaW4sDQogIGRhdGEgPSBkYXRhX2FydGVtaXMsIHBhbmVsLmlkPWMoInN0YWJsZWNvaW4iLCAiZGF0ZSIpDQopDQoNCmxwX3N0YW5jZV9zICA8LSBmZW9scygNCiAgZihsb2dfc3VwcGx5LCAwOmgpLSBsKGxvZ19zdXBwbHksMSkgfiBzdGFuY2UgKyAgbChncHJkLDA6MSkrbCh2aXgsIDA6MSkrbHVuYStmdHggfCBzdGFibGVjb2luLA0KICBkYXRhID0gZGF0YV9hcnRlbWlzLCBwYW5lbC5pZD1jKCJzdGFibGVjb2luIiwgImRhdGUiKQ0KKQ0KDQpwbG90X2xwKGxwX3NlbnRfcCwgbHBfc3RhbmNlX3AsIHR5cGU9YygiU2VudGltZW50IiwgIlN0YW5jZSIpLCB0aXRsZT0iUmVhY3Rpb24gb2YgcHJpY2VzIHRvIGluY3JlYXNlIGluIHNlbnRpbWVudC9zdGFuY2UiKQ0KcGxvdF9scChscF9zZW50X3MsIGxwX3N0YW5jZV9zLCB0eXBlPWMoIlNlbnRpbWVudCIsICJTdGFuY2UiKSwgdGl0bGU9IlJlYWN0aW9uIG9mIHN1cHBseSB0byBpbmNyZWFzZSBpbiBzZW50aW1lbnQvc3RhbmNlIikNCg0KYGBgDQoNCg0KDQoNCiMjIyMgRUNCIHZzIG90aGVyDQpgYGB7ciwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobz1GQUxTRX0NCmxwX3NlbnRfZWNiIDwtIGZlb2xzKA0KICBmKGxvZ19ta3RjYXAsIDA6aCktIGwobG9nX21rdGNhcCwxKSB+IHNlbnRfZWNiICArICBsKGdwcmQsMDoxKStsKHZpeCwgMDoxKStsdW5hK2Z0eCB8IHN0YWJsZWNvaW4sDQogIGRhdGEgPSBkYXRhX2FydGVtaXMsIHBhbmVsLmlkPWMoInN0YWJsZWNvaW4iLCAiZGF0ZSIpKQ0KDQpscF9zdGFuY2VfZWNiIDwtIGZlb2xzKA0KICBmKGxvZ19ta3RjYXAsIDA6aCktIGwobG9nX21rdGNhcCwxKSB+IHN0YW5jZV9lY2IgKyAgbChncHJkLDA6MSkrbCh2aXgsIDA6MSkrbHVuYStmdHggfCBzdGFibGVjb2luLA0KICBkYXRhID0gZGF0YV9hcnRlbWlzLCBwYW5lbC5pZD1jKCJzdGFibGVjb2luIiwgImRhdGUiKSkNCg0KbHBfc2VudF9vdGhlciA8LSBmZW9scygNCiAgZihsb2dfbWt0Y2FwLCAwOmgpLSBsKGxvZ19ta3RjYXAsMSkgfiBzZW50X25vbl9lY2IgICsgIGwoZ3ByZCwwOjEpK2wodml4LCAwOjEpK2x1bmErZnR4IHwgc3RhYmxlY29pbiwNCiAgZGF0YSA9IGRhdGFfYXJ0ZW1pcywgcGFuZWwuaWQ9Yygic3RhYmxlY29pbiIsICJkYXRlIikpDQoNCmxwX3N0YW5jZV9vdGhlciA8LSBmZW9scygNCiAgZihsb2dfbWt0Y2FwLCAwOmgpLSBsKGxvZ19ta3RjYXAsMSkgfiBzdGFuY2Vfbm9uX2VjYiArICBsKGdwcmQsMDoxKStsKHZpeCwgMDoxKStsdW5hK2Z0eCB8IHN0YWJsZWNvaW4sDQogIGRhdGEgPSBkYXRhX2FydGVtaXMsIHBhbmVsLmlkPWMoInN0YWJsZWNvaW4iLCAiZGF0ZSIpKQ0KDQpwbG90X2xwKGxwX3NlbnRfZWNiLCBscF9zdGFuY2VfZWNiLCB0eXBlPWMoIlNlbnRpbWVudCIsICJTdGFuY2UiKSwgdGl0bGU9IkVDQiIpDQpwbG90X2xwKGxwX3NlbnRfb3RoZXIsIGxwX3N0YW5jZV9vdGhlciwgdHlwZT1jKCJTZW50aW1lbnQiLCAiU3RhbmNlIiksIHRpdGxlPSJPdGhlciIpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=