Coder Social home page Coder Social logo

station's Introduction

Station

Banner

Station is a web application to interact with Terra Core and other supported chains.

Station allows users to:

  • View the balances and values of coins and tokens held in the connected wallet.
  • View a list of transactions signed by the connected wallet.
  • View details of active validators on Terra and supported chains.
  • Send tokens to another wallet.
  • Swap currencies at the effective exchange rate.
  • Stake LUNA or other supported base assets to an active validator or unstake by undelegating.
  • Earn rewards generated by staking tokens.
  • Participate in governance by voting on proposals and submitting your own.

Running Station

This project was bootstrapped with Create React App.

Run Station with the following commands:

git clone https://github.com/terra-money/station.git
cd station
npm i
npm run start

Runs the app in development mode. Open http://localhost:3000 to view it in the browser.

Note: For the Windows operating system, separate the paths by semicolons in the .env file.

station's People

Contributors

alagiz avatar alecande11 avatar andrexbass avatar anonymousqwer avatar autostake-com avatar blockjayn avatar dependabot[bot] avatar edk208 avatar emidev98 avatar erichgorski avatar gregnuj avatar hanjukim avatar hanwong avatar joshuabrigati avatar kristofenyi avatar krsjoseph avatar marventuswp avatar maxxb95 avatar midnyt-simlyn avatar mwmerz avatar octalmage avatar peratx avatar rafaelzimmermann avatar seleniumforest avatar snyk-bot avatar terencelimzhengwei avatar terran6 avatar tuky191 avatar wrjanan avatar xstoudi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

station's Issues

Station warning from wallet on Playstation website

I am getting an alert anytime I visit any playstation website from terra station saying it's not an official station website so be careful. Can this be fixed, or can you give an option to whitelist so I can stop getting the warning.

Unable to connect with Ledger Nano X

Trying to connect to Terra Station with my Ledger Nano X but is not working, I see on the console this error:

TypeError: cyclic object value
    parseData ledger:8
    i ledger:10
    i ledger:10
    onCommitFiberRoot ledger:10
    Ru React
    unstable_runWithPriority scheduler.production.min.js:18
    React 4
    unstable_runWithPriority scheduler.production.min.js:18
    React 5
    next WalletProvider.tsx:106
    v Subscriber.ts:194
    _next Subscriber.ts:119
    next Subscriber.ts:75
    next Subject.ts:63
    i errorContext.ts:29
    next Subject.ts:58
    next BehaviorSubject.ts:37
    updateStates controller.ts:770
    t controller.ts:272
    promise callback*t controller.ts:225
    p WalletProvider.tsx:38
    React 2
    _ WalletProvider.tsx:36
    React 12
    1761 index.tsx:25
    promise callback*1761 index.tsx:23
    a ledger:1
    r ledger:1
    t ledger:1
    <anonymous> main.15ac7297.chunk.js:1
react_devtools_backend.js:4061:25
    overrideMethod react_devtools_backend.js:4061
    i ledger:10
    onCommitFiberRoot ledger:10
    Ru React
    unstable_runWithPriority scheduler.production.min.js:18
    React 4
    unstable_runWithPriority scheduler.production.min.js:18
    React 5
    next WalletProvider.tsx:106
    v Subscriber.ts:194
    _next Subscriber.ts:119
    next Subscriber.ts:75
    next Subject.ts:63
    i errorContext.ts:29
    next Subject.ts:58
    next BehaviorSubject.ts:37
    updateStates controller.ts:770
    t controller.ts:272
    (Async: promise callback)
    t controller.ts:225
    p WalletProvider.tsx:38
    React 2
    _ WalletProvider.tsx:36
    React 12
    1761 index.tsx:25
    (Async: promise callback)
    1761 index.tsx:23
    a ledger:1
    r ledger:1
    t ledger:1
    <anonymous> main.15ac7297.chunk.js:1

this is shown to the user upon error:

image

I'm using Firefox developer 98.0b8:

image

The Terra app is installed on my Ledger and have the latest firmware update. I can connect with XNO's nault.cc wallet web app without issues.

Theme color - individual setting for different wallet

Can we have an individual setting for different wallet?
I always prefer black theme but my other wallet have no luna staked, when I switch to it, it reset to basic theme
and i need to change it back everytime its quite troublesome

Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded

Every time I try to access one of my wallet from "import private key" on terra station chrome app I get this error

Steps to reproduce:
Install terra station chrome app
import private key

Expected result:
Able to log in wallet
Capture d’écran 2022-01-05 à 16 08 09

Sidenote: When creating a new wallet on Terra station OSX app, I was able to create a name of only 3 digits while trying to recover a wallet from terra station chrome app doesn't let you recover a wallet less than 5 alphanumeric numbers.

Terra station chrome app
Capture d’écran 2022-01-05 à 16 11 11

VS Terra station osx app
Capture d’écran 2022-01-05 à 16 11 51

Feature: Import wallet using Keplr private key in TerraStation (includes basic solution)

Right now you cannot use the private key from the Keplr extension and import the wallet in TerraStation.

This could be crucial for some users, because some Keplr accounts used Google login to generate their access to Keplr extension and do not have their mnemonics.
However, they do have the private key which should be good enough for everything that has to do with that single Cosmos universe wallet.
My suggestion is to add a simple form that allows to input a private key, account alias, terra address (probably not needed) and password and it will import an account from the hex encoded private key (such as the one Keplr provides)

Meanwhile if stumbles uppon this, here is how to generate the Terra private key (used in "Add wallet > Import wallet") from the Keplr hex encoded private key (copied from "Select Account > ... three-dots > View Private Key".

const KEPLR_PRIVATE_KEY = "keplr_private_key_without_0x"
const TERRA_ADDRESS_IN_KEPLR = "keplr_Terra_address"
const NAME = "account_alias_to_be_used_in_terra_station"
const PASSWORD_IN_TERRA = "password_same_as_terra_station_import_wallet_screen_when_importing"
const ENCRYPTED_KEY= encrypt(KEPLR_PRIVATE_KEY, PASSWORD_IN_TERRA)
const key = Buffer.from(`{
    "name":"${NAME}",
    "address":"${TERRA_ADDRESS_IN_KEPLR}",
    "encrypted_key":"${ENCRYPTED_KEY}"
}`).toString('base64')

The encrypt method is this one https://github.com/terra-money/station/blob/f55a28de9812f72bb36f9072cb86e54f4e64efc7/src/utils/terra-keystore.ts#L6

this is a copy of the station-legacy issue

hardware wallet (ledger) support for updated terra station desktop app

I understand that a hardware ledger is no longer supported in the new updated version of terra station desktop app while it is still supported on the the chrome web extension.

I just want to know if it is safe to downgrade my terra station app to the previous version where it was still supported. Is that a safe solution if I want to continue using hardware wallet on my desktop terra station app?

2 addresses with same seed

I tried to recover my wallet on another computer using terra station.
My seed generated a different wallet address with no balance or history of transactions
I used the same wallet name, same password and same seed.
I am still connected on to my wallet on my phone and on my old computer

How can there be multiple wallet addresses with same seed?
If my seed does not allow me to recover my wallet on a new computer how can I trust Luna?

Very odd

Export transaction history as CSV file

As a user I would like to be able to export my wallet transaction history as CSV file so I can import on my Excel sheet and to use to calculate my taxes.

Delegate issue

Hi,

I'm new to Terra ecosystem, so maybe I did something wrong. The goal is to bake some Lunas.
In Terra Station Web I'm clicking -> 'Stake' -> 'stake.systems' -> Delegate -> In Ammount file I provided 1000.
Then the error appears:

failed to execute message; message index: 0: message type *types.MsgDelegate is not supported at height 7621088: message not supported: invalid request

Not sure if the issue is related to the ecosystem or to the app. 7621088 sounds like block height, so maybe it's related to the halt.

Cosmos App not supported anymore

Hello,

I would like to report an issue. I have read many users used the Cosmos app with Ledger to connect to Terra Station.
This new release does not support the Cosmos app because it asks to Open the Terra app in the Ledger.

Many users has luna staked in astroport until November or December.

Would you be so kind to the issue?

I think the solution is to add the Keplr Derivation Path along with the Terra Station to allow retro-compatibility

Dark Theme

I am curious about the thought process behind requiring certain amount of staking for a color scheme.

I would like to suggest to allow the Dark theme for free.

Bringing new people into the eco system and the official wallet not allowing a dark theme unless they stake I think is very off putting. Some people simply cannot do that and a dark theme is pretty much a must for certain people.

All of a sudden the same seed phrase generates a new wallet address

Hi,

One day I've noticed that my terra station is disconnected so I tried re-connect with my previous seed phrase. I typed in the same password as before, and this time it generates a brand new wallet address and I can't link to my previous account.

What have I done wrong? I do not possess the private key at the moment since I haven't created one. From the open source code, I can see the logic how terra wallet generates the private key, so I wonder if reverse engineer to retrieve the private key to recover my previous account would work. https://github.com/terra-money/station-mobile/blob/3ec15b9a620432dee47378f5b6e621d93780748a/src/utils/wallet.ts#L66

Also is there a way to retrieve the wallet name which I seem to have forgotten?

What I have with me is the wallet address and the seed phrase that somehow does not work.

Please help! thank you

Governance vote colors

For new users, it might be difficult to understand these colors, maybe a label on hover is required to explain which category? 🤔 so we can have these colors, like part of the theme rather than having the same colors for all themes

Screen Shot 2021-12-27 at 11 59 35 AM

Thanks 👍

White screen of death in Safari mobile 15.5

I hope this is the right place to report issues for station.terra.money:

When visiting via Safari on iOS 15.5 the screen goes white, and the following error is reported in the console when attached in developer mode:

SyntaxError: Invalid regular expression: invalid group specifier name
file: 2.6f33f1a5.chunk.js

I also saw the problem on iOS 15.4. Other users have reported similar issues on the Terra v2 Governance discord.

No clear path to documentation.

The wallet should have a question mark icon somewhere that leads to the docs that are specific to the wallet, which I believe is https://docs.terra.money/docs/learn/terra-station/README.html.

How to reproduce:

  1. Decide to buy some cheap UST to convert into Luna and check Terra Station's market swap to see if it will be profitable.
  2. Note that Terra Station reports an Oracle price and an Expected price.
  3. Wonder why there are two prices and how the difference between them comes to be.
  4. Look all around the Terra Station user interface for something that might lead to a better understanding, get frustrated, and create an issue like this one.

Adding a ? icon to the interface will NOT be enough to solve this issue. The page in the docs that seems to be the right one for this information about the Oracle price and the Expected price is https://docs.terra.money/docs/learn/terra-station/swap.html but it doesn't mention anything about why there is an expected price that is different or what might account for the difference.

My understanding of the Terra system is that burning UST creates LUNA using a conversion rate determined by the oracle participants who are competing to accurately predict the market price of LUNA. The mint/burn function does not (or at least should not, as I understand it) participate in the market except for its reliance on oracle participants to establish the market rate. This makes the "expected price" in the user interface a mysterious and disturbing "hidden tax" on the mint/burn function. I'm sure it isn't, but the documentation that I found offers no explanation, or any path to where an explanation might be provided. A search for the phrase "expected price" only has three hits, and none of them actually contain "expected price". The closest match which seems like the place for "expected price" to be explained, is https://docs.terra.money/docs/develop/module-specifications/spec-oracle.html?highlight=expected%20price but it contains the word "expected" only once, and not in the context of Terra Station's use of "Expected price" on the market swap page.

Stable swaps are not working !!

It's throwing error: Not supported for the network and the gas estimate is failing, had a discussion on discord with Etienne | Setten. He mentioned any swap with LUNA are disabled. But stable to stable swaps should still work

Screenshot 2022-06-01 at 1 05 56 PM

Unable to add or display NFTs in Station when using LocalTerra

Working on some tutorials for minting NFTs using LocalTerra and it would be nice to be able to see these NFTs in Station. Currently I get a JavaScript error when I attempt to add the contract address:

Screen.Recording.2022-03-31.at.12.17.05.PM.mov

It appears to be due to localterra missing in the customTokens object:

Screen Shot 2022-03-31 at 12 16 48 PM

Please let me know if you have any questions about how to replicate, thanks!

Security: desktop app AND the website (aka this project)

Hi, I've looked at the desktop app "station-desktop" (https://github.com/terra-money/station-desktop/blob/d7b6b19635d3115bbe1c81483fdf841adf1ce2bc/public/electron.js) AND if you look at ipcMain.on('generateAddresses', async (event, seed) => { .. AND then if you search this project for ipcRenderer (or something else..) that calls generateAddresses. It's not here? If this project isn't calling generateAddresses and other functions inside the desktop app - who's calling them? Also does the desktop app return private keys back to the renderer? Which in the case of the desktop app (since it's just a webview) should return data to https://station.terra.money/. That means leaking private keys, etc... From a non-Electron dev perspective this all looks a bit suspicious... I just need some clarification.. thx

Can't recover wallet build with Terra Station Chrome Extension

I built a Terra Station wallet with the Chrome Extension and deposited 5000 UST into the wallet using a ledger nano S. At some point I deleted the wallet from the extension and now cannot recover it. When I use the same ledger it brings up a new address with no funds in it. I've tried rebuilding the wallet from the seed phrase but this doesn't work either - again, a new address with no funds. I also tried the XDEFI wallet. This wallet will bring up multiple addresses but none of them are the right one. I can clearly see my funds on the terra blockchain scanner but it is at the original address I cannot seem to regenerate. Can anyone help? I think others have had this problem.

How terra station decides which rewards to withdraw?

Is there a way to know deterministically which rewards are gonna be claimed in a MsgWithdrawDelegationReward transaction?
Is there a minimum amount of rewards needed to be able to collect them? I noticed some were claimed and others were left for future claiming, why that?

For example why terra station claimed uusd but utwd or ujpy were left? I don't get to choose which token rewards to claim, some are claimed some aren't.

What are the rules behind this?

[Feature Request] Allow selection of which rewards to withdraw as denom

So recently we got this new feature to withdraw staking rewards as a denom of choice: 097b8c3

This is a extremely useful feature that many users including myself have been waiting for, but unfortunately its not usable in the current form for people with ledger hardware wallets, as it's trying to swap too many tokens in a single transaction, users will be met with the following error message:

Untitled

From what I have heard by asking around, this seems to be a limitation of the ledger itself, and not really possible to "fix".

Proposed feature(s):
Because of the above issue, can we add a selector on the withdraw rewards page to choose which tokens out of all the rewards, we want to convert into the denom?

Here is a picture to show what I mean, it's just something I drew up in paint to show the rough idea of this proposed solution:
image

I believe this is a fairly straightforward solution that would solve the problem of ledger users encountering the "too many tokens" error, since they can just pick the two or three tokens that are worth something to swap, rather than all 20 something tokens, most of which are in extremely small amounts anyways.

Unable to deposit UST:Expected private key to be an Uint8Array

I'm trying to deposit UST into Anchor, however I keep getting an error saying:
“Expected private key to be an Uint8Array with length 32”
I think it maybe a problem about encoding,but i do not know how to solve it.
I am searching for a long time on net. But no use. Please help or try to give some ideas how to achieve this.
error detail:
Error type: CreateTxFailed
Error stack: CreateTxFailed: Expected private key to be an Uint8Array with length 32
at mapExtensionTxError (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:24355)
at Object.error (https://app.anchorprotocol.com/assets/main.e0f08b50.js:59:108994)
at Object.error (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:9090)
at t._error (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:8290)
at t.error (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:7958)
at https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:12829
at errorContext (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:7576)
at t.error (https://app.anchorprotocol.com/assets/main.e0f08b50.js:42:12684)
at https://app.anchorprotocol.com/assets/main.e0f08b50.js:59:82976

Exported with wrong password | Invalid Hex string

I was able to export my private key on terrastation using a 2 character password. (Seems odd as the minimum size is 10)
Iam pretty sure that it is not the originral password.
I did change the password after that, and now the export private key gives me a string that is not accepted by terrastation (invalid hex string)
I also cant sign transactions anymore.

I did not keep my recovery phrase, so the funds inside are as good as lost, condsidering the broken export function.

I just wanted to inform you, that i was able to export with a wrong password and basically break the wallet in the progress.

Where are private keys generated?

@simcheolhwan @hanjukim @rafaelzimmermann
Hello since the desktop is just a webview/wrapper for https://station.terra.money/. What function is used in this project (since this project is station.terra.money) to generate private keys for the desktop app? Also since the desktop app uses station.terra.money that means Terra (as a company) can in theory view/take users private keys? Because we as users can't be sure that Terra is serving exactly this open-source project on the web. I'd appreciate if anyone can clear up my confusions, after that you will have a new Luna investor and probably many more 💯

Change network to Classic in the web wallet

Hello Team,

Can you add the change of network on the web version of the wallet. Without this addition, it is impossible to manage validators (on classic) for ledger users.

Thanks

Wallet address cannot be verified on Ledger Hardware Wallet via Terra Station web app

When using Terra Station web app in Chrome paired with a USB Ledger device there is no option to verify the wallet address displayed in Terra Station on the Ledger hardware wallet display.

According to the tutorial:
https://medium.com/terra-money/how-to-use-ledger-nano-with-terra-station-dab33fc8aad5

  1. Click Wallet on the menu in left panel, and you will see a Ledger icon next to your address. Click the icon. Once clicked, you should see your Terra address in your Ledger device. Please verify that the address shown in Station is the same on the device.

Obviously Terra Station layout changed and in the new layout there is no 'Ledger icon' to initiate the verification process.

I thus cannot trust / use the wallet address displayed on Terra Station without exposing myself to adversarial attacks (Terra Station code being manipulated).

Ledger HW wallet not found

TerraStaion (Mac osx desktop version) can't find the ledger nano anymore:

Couldn't find the Ledger. Check the Ledger is plugged in and unlocked.

Issue starting development server

Followed instructions.

node -v
v14.15.5

npm -v
6.14.11

Error:

npm run start

terra-station@ start F:\Code\GitHub\station
react-scripts start

i 「wds」: Project is running at https://192.168.1.12/
i 「wds」: webpack output is served from
i 「wds」: Content not from webpack is served from F:\Code\GitHub\station\public
i 「wds」: 404s will fallback to /
Starting the development server...
Failed to compile.

./src/app/components/HeaderIconButton.module.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-7-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-7-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-7-4!./src/app/components/HeaderIconButton.module.scss)
SassError: Can't find stylesheet to import.

1 │ @import "mixins";
│ ^^^^^^^^

src\app\components\HeaderIconButton.module.scss 1:9 root stylesheet

Send Luna Error due to insufficient fees

Terra Station (https://station.terra.money/send?token=uluna) is not using the right fee for sending Tx. The error message is:

insufficient fees; got: "1267uluna", required: "21231uaud,21231ucad,15644uchf,109508ucny,100568udkk,13968ueur,12292ugbp,130739uhkd,243597560uidr,1215753uinr,1829217ujpy,18970440ukrw,633019uluna,47889381umnt,67046umyr,139678unok,849240uphp,11726usdr,139678usek,22349usgd,516249uthb,446968utwd,16762uusd" = "21231uaud,21231ucad,15644uchf,109508ucny,100568udkk,13968ueur,12292ugbp,130739uhkd,243597560uidr,1215753uinr,1829217ujpy,18970440ukrw,633019uluna,47889381umnt,67046umyr,139678unok,849240uphp,11726usdr,139678usek,22349usgd,516249uthb,446968utwd,16762uusd"(gas) +""(stability): insufficient fee

Screen Shot 2022-05-15 at 11 24 02 AM

When Firefox Extension ??

whats happening with this issue?

I find it really hard to believe someone would support Chrome, but not Firefox deployment of this extension. I mean you cant expect half the population to stop using Firefox and suddenly use Chrome just so they can use Terra Station's additional features and protocols.
Isnt this a little bit unfair? come on guys... we have been waiting for a long time now

terra-money/station-legacy#147

My wallet address changed

Good day,

I have 2 concerns actually.

  1. Just logged into today using my ledger device and I noted that my luna wallet address has changed, is this possible?
  2. It appears that 10 days ago I received a message in my luna wallet to mint some NFT's, I didn't do this as I don't know what the source is. I did take note of the wallet address that the message appears to originate from, any information/awareness on this?

Would appreciate your kind assistance on these queries

Regards

Ann

[Feature Request] Implement a verified / whitelisted dApp mechanism

Many users are being scammed these days. While ultimate responsibility should always fall on users using best practices and proper security measures being taken, the extension can help accidents from occurring.

Proposed feature(s):
This could take a form similar to:

  1. Let users add whitelisted websites to the extension (similar to how CEX will allow you to whitelist particular addresses and block withdrawals to others). Bypassing this whitelist would require extra confirmation / warning to user.
  2. Let various protocols implement a "verified" auth header to give extension knowledge the website is a known legitimate terra protocol (Especially TFL sponsored dApps such as Anchor) and communicate that to user with extra warnings if an application matches known protocols but didn't submit verification header
  3. Implement a naughty list of known scam sites / contract addresses to warn users with extra confirmations to proceed at own risk

The list isn't comprehensive or prescriptive, it's just to give an idea of what I'm getting at.

Enable Cosmos app to access with ledger

Terra station used to allow (I think this is recently updated; it used to work) to access ledger with Cosmos app which provides a different address from the one using Terra app. It now returns the following message Open the Terra app in the Ledger. Is this intended?

If it is, is there a way to use certain version of Terra station? because I have been accessing Terra station with Cosmos app since it is convenient to transfer UST from Osmosis app to Terra ecosystem back and forth using the same address. Now i can only access it using Terra app.

Unable to connect to local terra

Previous versions of Terra Station supported connection to local terra or to any other blockchain instance.

How should this be accomplished in the current version?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.