Jotun Paint Calculator — Find How Much Paint You Need

Jotun Paint Area Calculator

Jotun Paint Calculator

Premium accuracy for your perfect finish

Calculation Mode: Wall-by-Wall

1. Choose Product

2. Define Walls

3. Coats

2
Total Surface Area 0
Est. Paint Needed 0 L

Painting a room or an entire house is not just about choosing the right color. One of the most important parts of any painting project is knowing how much paint you actually need. If you buy too little, the work stops in the middle. If you buy too much, you waste money and materials.

This is where the Jotun Paint Calculator becomes very helpful. It helps you estimate the exact amount of paint required based on the size of the surface, the number of coats, and the paint’s coverage rate. Instead of guessing, you get a clear and accurate answer.

In this article, every step of the calculation process is explained in simple language so anyone can understand and use the tool correctly.

What the Jotun Paint Calculator Is

The Jotun Paint Calculator is an online tool designed to calculate how many liters of Jotun paint you need for your project. It works for walls, ceilings, rooms, and even entire buildings.

The calculator considers three main things:

  1. Total surface area – How big the walls or ceilings are.

  2. Number of coats – How many layers of paint you want to apply.

  3. Paint coverage rate – How much area one liter of paint can cover.

By combining these values, the calculator gives you a realistic paint estimate. This makes planning easier for homeowners, painters, and contractors.

How the Jotun Paint Calculator Works

Inputs You Enter

To get accurate results, the calculator asks for:

  • Wall or surface dimensions (length and height)

  • Number of walls or rooms

  • Number of paint coats

  • Paint coverage rate (usually mentioned on the paint can)

  • Areas to exclude (windows, doors, etc.)

These inputs describe the actual painting area.

Calculation Process

The calculator follows a simple process:

  1. It calculates the total wall area.

  2. It subtracts windows and doors.

  3. It multiplies by the number of coats.

  4. It divides by the paint coverage rate.

This gives the total paint quantity needed.

Output You Get

You receive the required paint amount in liters. Some tools also show the number of paint cans needed.

Key Formulas Used

Total Surface Area

A_{total} = \sum (Area\ of\ each\ wall)

This adds up the area of all walls and ceilings.

Net Paintable Area

A_{net} = A_{total} - A_{cutouts}

This removes doors and windows from the total.

Paint Required

Paint\ Required = \frac{A_{net} \times Coats}{Coverage\ Rate}

This formula shows how many liters of paint are needed.

Step-by-Step Examples

Example 1: One Room Painting

Room size:

  • Length = 4 m

  • Width = 3 m

  • Height = 2.5 m

Wall area:

A = 2(4 + 3) \times 2.5 = 35 \text{ m}^2

Windows and doors = 5 m²

A_{net} = 35 - 5 = 30 \text{ m}^2

Paint coverage = 10 m²/L

Coats = 2

Paint = \frac{30 \times 2}{10} = 6 \text{ liters}

So, you need 6 liters of paint.

Example 2: Whole House

If total wall area = 200 m²

Doors/windows = 20 m²

Net area = 180 m²

Coverage = 12 m²/L

Coats = 2

Paint = \frac{180 \times 2}{12} = 30 \text{ liters}

You need 30 liters of paint.

Features of the Jotun Paint Calculator

Easy to Use

The tool has simple input boxes, so even beginners can use it.

Accurate Results

It uses proper formulas to avoid guessing.

Supports Multiple Rooms

You can calculate for more than one room.

Custom Coats

You can choose how many layers of paint you want.

Time Saving

It reduces manual calculations.

Uses and Applications

Home Painting

Homeowners can plan paint purchases correctly.

Renovation Projects

Builders can estimate materials easily.

Commercial Buildings

Large projects need accurate paint planning.

Budget Planning

Knowing paint quantity helps control costs.

Avoiding Waste

Less leftover paint means less waste.

Helpful Tips for Best Results

Measure Walls Properly

Use a tape to measure height and width.

Subtract Doors and Windows

These areas do not need paint.

Check Coverage Rate

Different Jotun paints cover different areas.

Add a Small Extra Margin

Surfaces may absorb more paint.

Use Same Units

Do not mix feet and meters.

Common Mistakes to Avoid

Guessing Wall Size

Always measure instead of estimating.

Ignoring Extra Coats

More coats need more paint.

Using Wrong Coverage

Each paint has a different rate.

Forgetting Ceilings

If painting ceilings, include them.

Not Accounting for Texture

Rough walls need more paint.

Frequently Asked Questions

What Is Paint Coverage Rate?

It shows how much area one liter can cover.

How Many Coats Are Needed?

Usually 2 coats for good finish.

Can I Use This for Exterior Walls?

Yes, just use correct dimensions.

Is Jotun Coverage Standard?

Different products have different coverage.

Should I Buy Extra Paint?

A small extra amount is useful for touch-ups.

Final Words

The Jotun Paint Calculator is a smart and simple tool for anyone planning a painting project. It helps you avoid mistakes, save money, and finish your work smoothly.

By understanding each step clearly—measuring area, subtracting cutouts, choosing coats, and using the correct coverage—you can get perfect results every time. Whether you are painting one room or an entire building, this calculator makes the process easy and stress-free.

Related Calculator:  Room Renovation Calculator – Calculate Area & Material Needs

Similar Posts

  • Hip Roof Area Calculator – Compute Roof Surface for Materials

    Hip Roof Area Calculator Hip Roof Area Calculator Estimate Roofing Materials & Framing Lengths Roofing Materials Framing Estimate Building Dimensions (Flat Footprint) Length (ft) Width (ft) Roof Pitch Flat (0/12)2/12 (9.5°)3/12 (14.0°)4/12 (18.4°)5/12 (22.6°)6/12 (26.6°)7/12 (30.3°)8/12 (33.7°)9/12 (36.9°)10/12 (39.8°)12/12 (45.0°) Overhang (in) Rafter Spacing 12″ O.C.16″ O.C.24″ O.C. Waste Factor (%) Price per Bundle ($)…

  • BET Surface Area Calculator — Brunauer–Emmett–Teller Method

    BET Surface Area Calculator BET Surface Area Calculator Evaluate Specific Surface Area from Adsorption Isotherms Adsorbate Gas Nitrogen (N₂)Argon (Ar) at 87KKrypton (Kr)Carbon Dioxide (CO₂)Water Vapor (H₂O)Custom Area… Cross-Section (Ų) Linear Region (P/P₀ range) Min: Max: Standard BET range is typically 0.05 – 0.35 Isotherm Data Paste 2 columns: Relative Pressure (P/P₀) and Volume Adsorbed…

  • Area of Bounded Region Calculator – Find Area Enclosed by Curves

    // Base64 Content var b64 = “PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkFyZWEgb2YgQm91bmRlZCBSZWdpb24gQ2FsY3VsYXRvciAoMyBDdXJ2ZXMpPC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tcHJpbWFyeTogI2MyMTg1YjsKICAgICAgICAgICAgLyogUGluay9SZWQgdGhlbWUgKi8KICAgICAgICAgICAgLS1wcmltYXJ5LWxpZ2h0OiAjZjhiYmQwOwogICAgICAgICAgICAtLWFjY2VudC0xOiAjMTk3NmQyOwogICAgICAgICAgICAvKiBCbHVlIChmMSkgKi8KICAgICAgICAgICAgLS1hY2NlbnQtMjogI2QzMmYyZjsKICAgICAgICAgICAgLyogUmVkIChmMikgKi8KICAgICAgICAgICAgLS1hY2NlbnQtMzogIzM4OGUzYzsKICAgICAgICAgICAgLyogR3JlZW4gKGYzKSAqLwogICAgICAgICAgICAtLWJnLXBhZ2U6ICNmZmY1Zjg7CiAgICAgICAgICAgIC0tYmctY2FyZDogI2ZmZmZmZjsKICAgICAgICAgICAgLS1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjEpOwogICAgICAgICAgICAtLWJvcmRlcjogI2UwZTBlMDsKICAgICAgICB9CgogICAgICAgICogewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXBhZ2UpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHggMTVweDsKICAgICAgICB9CgogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93KTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMjVweDsKICAgICAgICB9CgogICAgICAgIGhlYWRlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIGhlYWRlciBoMiB7CiAgICAgICAgICAgIGNvbG9yOiAjMzMzOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgfQoKICAgICAgICBoZWFkZXIgcCB7CiAgICAgICAgICAgIGNvbG9yOiAjNjY2OwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjUwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtZ3JvdXAgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBjb2xvcjogIzQ0NDsKICAgICAgICB9CgogICAgICAgIC5iYWRnZSB7CiAgICAgICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB9CgogICAgICAgIC5iMSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC0xKTsKICAgICAgICB9CgogICAgICAgIC5iMiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC0yKTsKICAgICAgICB9CgogICAgICAgIC5iMyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC0zKTsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLnByZWZpeCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgbGVmdDogMTJweDsKICAgICAgICAgICAgY29sb3I6ICM4ODg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIGlucHV0W3R5cGU9InRleHQiXSB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDEycHggMTJweCA0NXB4OwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXIgMC4yczsKICAgICAgICB9CgogICAgICAgIGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuYnRuLWNhbGMgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzLCBib3gtc2hhZG93IDAuMnM7CiAgICAgICAgfQoKICAgICAgICAuYnRuLWNhbGM6aG92ZXIgewogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgxOTQsIDI0LCA5MSwgMC4zKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIH0KCiAgICAgICAgLmVycm9yLWJveCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmViZWU7CiAgICAgICAgICAgIGNvbG9yOiAjYjcxYzFjOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAvKiBSZXN1bHRzICovCiAgICAgICAgLnJlc3VsdHMtYXJlYSB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZjZTRlYzsKICAgICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICB9CgogICAgICAgIC5yZXN1bHRzLWFyZWEudmlzaWJsZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgfQoKICAgICAgICAucmVzLWhlYWRlciB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICB9CgogICAgICAgIC5yZXMtdmFsIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjODgwZTRmOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIH0KCiAgICAgICAgLnBvaW50cy1pbmZvIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB9CgogICAgICAgIC5wb2ludHMtaW5mbyB1bCB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAyMHB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBHcmFwaCAqLwogICAgICAgIC5ncmFwaC1jb250YWluZXIgewogICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1ib3JkZXIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAubGVnZW5kIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNjY2OwogICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgoKPGJvZHk+CgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICA8aGVhZGVyPgogICAgICAgICAgICA8aDI+QXJlYSBvZiBCb3VuZGVkIFJlZ2lvbiBDYWxjdWxhdG9yPC9oMj4KICAgICAgICAgICAgPHA+Q2FsY3VsYXRlIHRoZSBleGFjdCBhcmVhIGVuY2xvc2VkIGJ5IHRocmVlIGludGVyc2VjdGluZyBjdXJ2ZXMuPC9wPgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgPGxhYmVsPjxzcGFuIGNsYXNzPSJiYWRnZSBiMSI+PC9zcGFuPiBDdXJ2ZSAxICh54oKBKTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJlZml4Ij55PTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZuMSIgdmFsdWU9IngiIHBsYWNlaG9sZGVyPSJlLmcuIHgiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWw+PHNwYW4gY2xhc3M9ImJhZGdlIGIyIj48L3NwYW4+IEN1cnZlIDIgKHnigoIpPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmVmaXgiPnk9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZm4yIiB2YWx1ZT0iLXggKyAyIiBwbGFjZWhvbGRlcj0iZS5nLiAteCArIDIiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgICAgICAgICAgICA8bGFiZWw+PHNwYW4gY2xhc3M9ImJhZGdlIGIzIj48L3NwYW4+IEN1cnZlIDMgKHnigoMpPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmVmaXgiPnk9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZm4zIiB2YWx1ZT0iMCIgcGxhY2Vob2xkZXI9ImUuZy4gMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1jYWxjIiBvbmNsaWNrPSJzb2x2ZSgpIj5DYWxjdWxhdGUgRW5jbG9zZWQgQXJlYTwvYnV0dG9uPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWJveCIgaWQ9ImVycm9yX21zZyI+PC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdHMtYXJlYSIgaWQ9InJlc19ib3giPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzLWhlYWRlciI+VG90YWwgRW5jbG9zZWQgQXJlYTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzLXZhbCIgaWQ9ImFyZWFfdmFsIj4tLTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9pbnRzLWluZm8iIGlkPSJwb2ludHNfZGV0YWlscyI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImdyYXBoLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxjYW52YXMgaWQ9InBsb3QiPjwvY2FudmFzPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZCI+VGhlIHNoYWRlZCByZWdpb24gcmVwcmVzZW50cyB0aGUgYXJlYSBib3VuZGVkIGJ5IGFsbCB0aHJlZSBjdXJ2ZXMuPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8c2NyaXB0PgogICAgICAgIC8qIC0tLSBBU1QgTWF0aCBQYXJzZXIgLS0tICovCiAgICAgICAgY29uc3QgTWF0aEVuZ2luZSA9ICgoKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IFRva2VuID0geyBOdW06IDEsIElkOiAyLCBPcDogMywgTFA6IDQsIFJQOiA1LCBFT0Y6IDYgfTsKICAgICAgICAgICAgZnVuY3Rpb24gdG9rZW5pemUocykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IFtdOyBsZXQgaSA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IHNbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKC9ccy8udGVzdChjKSkgeyBpKys7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICAgICAgaWYgKC9bMC05Ll0vLnRlc3QoYykpIHsgbGV0IG4gPSAnJzsgd2hpbGUgKGkgPCBzLmxlbmd0aCAmJiAvWzAtOS5dLy50ZXN0KHNbaV0pKSBuICs9IHNbaSsrXTsgdC5wdXNoKHsgdHlwZTogVG9rZW4uTnVtLCB2YWw6IHBhcnNlRmxvYXQobikgfSk7IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgvW2Etel0vLnRlc3QoYykpIHsgbGV0IGlkID0gJyc7IHdoaWxlIChpIDwgcy5sZW5ndGggJiYgL1thLXowLTldLy50ZXN0KHNbaV0pKSBpZCArPSBzW2krK107IHQucHVzaCh7IHR5cGU6IFRva2VuLklkLCB2YWw6IGlkLnRvTG93ZXJDYXNlKCkgfSk7IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnKy0qL14nLmluY2x1ZGVzKGMpKSB7IHQucHVzaCh7IHR5cGU6IFRva2VuLk9wLCB2YWw6IGMgfSk7IGkrKzsgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT09ICcoJykgeyB0LnB1c2goeyB0eXBlOiBUb2tlbi5MUCB9KTsgaSsrOyB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PT0gJyknKSB7IHQucHVzaCh7IHR5cGU6IFRva2VuLlJQIH0pOyBpKys7IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGkrKzsKICAgICAgICAgICAgICAgIH0gdC5wdXNoKHsgdHlwZTogVG9rZW4uRU9GIH0pOyByZXR1cm4gdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBjbGFzcyBQIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKHRzKSB7IHRoaXMudHMgPSB0czsgdGhpcy5wID0gMDsgfQogICAgICAgICAgICAgICAgcGVlaygpIHsgcmV0dXJuIHRoaXMudHNbdGhpcy5wXTsgfQogICAgICAgICAgICAgICAgY29uc3VtZSgpIHsgcmV0dXJuIHRoaXMudHNbdGhpcy5wKytdOyB9CiAgICAgICAgICAgICAgICBwYXJzZUV4cHIoKSB7IGxldCBsID0gdGhpcy5wYXJzZVRlcm0oKTsgd2hpbGUgKHRoaXMucGVlaygpLnZhbCA9PT0gJysnIHx8IHRoaXMucGVlaygpLnZhbCA9PT0gJy0nKSB7IGNvbnN0IG9wID0gdGhpcy5jb25zdW1lKCkudmFsOyBsID0geyB0eXBlOiAnQmluJywgb3AsIGwsIHI6IHRoaXMucGFyc2VUZXJtKCkgfTsgfSByZXR1cm4gbDsgfQogICAgICAgICAgICAgICAgcGFyc2VUZXJtKCkgeyBsZXQgbCA9IHRoaXMucGFyc2VGYWN0KCk7IHdoaWxlICh0aGlzLnBlZWsoKS52YWwgPT09ICcqJyB8fCB0aGlzLnBlZWsoKS52YWwgPT09ICcvJykgeyBjb25zdCBvcCA9IHRoaXMuY29uc3VtZSgpLnZhbDsgbCA9IHsgdHlwZTogJ0JpbicsIG9wLCBsLCByOiB0aGlzLnBhcnNlRmFjdCgpIH07IH0gcmV0dXJuIGw7IH0KICAgICAgICAgICAgICAgIHBhcnNlRmFjdCgpIHsgbGV0IGwgPSB0aGlzLnBhcnNlQmFzZSgpOyBpZiAodGhpcy5wZWVrKCkudmFsID09PSAnXicpIHsgdGhpcy5jb25zdW1lKCk7IGwgPSB7IHR5cGU6ICdCaW4nLCBvcDogJ14nLCBsLCByOiB0aGlzLnBhcnNlRmFjdCgpIH07IH0gcmV0dXJuIGw7IH0KICAgICAgICAgICAgICAgIHBhcnNlQmFzZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5wZWVrKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudHlwZSA9PT0gVG9rZW4uTnVtKSByZXR1cm4geyB0eXBlOiAnTGl0JywgdmFsOiB0aGlzLmNvbnN1bWUoKS52YWwgfTsKICAgICAgICAgICAgICAgICAgICBpZiAodC50eXBlID09PSBUb2tlbi5JZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuID0gdGhpcy5jb25zdW1lKCkudmFsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZWVrKCkudHlwZSA9PT0gVG9rZW4uTFApIHsgdGhpcy5jb25zdW1lKCk7IGNvbnN0IGEgPSB0aGlzLnBhcnNlRXhwcigpOyB0aGlzLmNvbnN1bWUoKTsgcmV0dXJuIHsgdHlwZTogJ0NhbGwnLCBuLCBhIH07IH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09ICd4JykgcmV0dXJuIHsgdHlwZTogJ1ZhcicgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09ICdwaScpIHJldHVybiB7IHR5cGU6ICdMaXQnLCB2YWw6IE1hdGguUEkgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT09ICdlJykgcmV0dXJuIHsgdHlwZTogJ0xpdCcsIHZhbDogTWF0aC5FIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICdMaXQnLCB2YWw6IDAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudHlwZSA9PT0gVG9rZW4uTFApIHsgdGhpcy5jb25zdW1lKCk7IGNvbnN0IGUgPSB0aGlzLnBhcnNlRXhwcigpOyB0aGlzLmNvbnN1bWUoKTsgcmV0dXJuIGU7IH0KICAgICAgICAgICAgICAgICAgICBpZiAodC52YWwgPT09ICctJykgeyB0aGlzLmNvbnN1bWUoKTsgcmV0dXJuIHsgdHlwZTogJ1VuYScsIG9wOiAnLScsIGE6IHRoaXMucGFyc2VCYXNlKCkgfTsgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOyByZXR1cm4geyB0eXBlOiAnTGl0JywgdmFsOiAwIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwYXJzZSgpIHsgcmV0dXJuIHRoaXMucGFyc2VFeHByKCk7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmdW5jdGlvbiBldihuLCB4KSB7CiAgICAgICAgICAgICAgICBpZiAoIW4pIHJldHVybiAwOyBpZiAobi50eXBlID09PSAnTGl0JykgcmV0dXJuIG4udmFsOyBpZiAobi50eXBlID09PSAnVmFyJykgcmV0dXJuIHg7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnQmluJykgeyBjb25zdCBsID0gZXYobi5sLCB4KSwgciA9IGV2KG4uciwgeCk7IHN3aXRjaCAobi5vcCkgeyBjYXNlICcrJzogcmV0dXJuIGwgKyByOyBjYXNlICctJzogcmV0dXJuIGwgLSByOyBjYXNlICcqJzogcmV0dXJuIGwgKiByOyBjYXNlICcvJzogcmV0dXJuIGwgLyByOyBjYXNlICdeJzogcmV0dXJuIE1hdGgucG93KGwsIHIpOyB9IH0KICAgICAgICAgICAgICAgIGlmIChuLnR5cGUgPT09ICdVbmEnKSByZXR1cm4gLWV2KG4uYSwgeCk7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnQ2FsbCcpIHsgY29uc3QgYSA9IGV2KG4uYSwgeCk7IHN3aXRjaCAobi5uKSB7IGNhc2UgJ3Npbic6IHJldHVybiBNYXRoLnNpbihhKTsgY2FzZSAnY29zJzogcmV0dXJuIE1hdGguY29zKGEpOyBjYXNlICd0YW4nOiByZXR1cm4gTWF0aC50YW4oYSk7IGNhc2UgJ3NxcnQnOiByZXR1cm4gTWF0aC5zcXJ0KGEpOyBjYXNlICdhYnMnOiByZXR1cm4gTWF0aC5hYnMoYSk7IGNhc2UgJ2xuJzogcmV0dXJuIE1hdGgubG9nKGEpOyB9IH0KICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjb21waWxlOiAocykgPT4geyB0cnkgeyBjb25zdCB0cyA9IHRva2VuaXplKHMpOyBjb25zdCBwID0gbmV3IFAodHMpOyBjb25zdCBhc3QgPSBwLnBhcnNlKCk7IHJldHVybiAoeCkgPT4gZXYoYXN0LCB4KTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gbnVsbDsgfSB9CiAgICAgICAgICAgIH07CiAgICAgICAgfSkoKTsKCiAgICAgICAgLyogLS0tIENvcmUgQXJlYSBMb2dpYyAtLS0gKi8KICAgICAgICBmdW5jdGlvbiBmaW5kUm9vdHMoZkEsIGZCKSB7CiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSB4ID0+IGZBKHgpIC0gZkIoeCk7CiAgICAgICAgICAgIGNvbnN0IHJvb3RzID0gW107CiAgICAgICAgICAgIGxldCBwcmV2ID0gZGlmZigtMTApOwogICAgICAgICAgICBmb3IgKGxldCB4ID0gLTEwOyB4IDw9IDEwOyB4ICs9IDAuMDUpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGN1cnIgPSBkaWZmKHgpOwogICAgICAgICAgICAgICAgaWYgKE1hdGguc2lnbihwcmV2KSAhPT0gTWF0aC5zaWduKGN1cnIpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmVmaW5lIHJvb3Qgd2l0aCBiaW5hcnkgc2VhcmNoCiAgICAgICAgICAgICAgICAgICAgbGV0IGwgPSB4IC0gMC4wNSwgciA9IHg7CiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCAxNTsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG0gPSAobCArIHIpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYobSkgKiBkaWZmKGwpIDwgMCkgciA9IG07IGVsc2UgbCA9IG07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJvb3QgPSAobCArIHIpIC8gMjsKICAgICAgICAgICAgICAgICAgICBpZiAoIXJvb3RzLmxlbmd0aCB8fCBNYXRoLmFicyhyb290IC0gcm9vdHNbcm9vdHMubGVuZ3RoIC0gMV0pID4gMC4wMSkgewogICAgICAgICAgICAgICAgICAgICAgICByb290cy5wdXNoKHJvb3QpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHByZXYgPSBjdXJyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByb290czsKICAgICAgICB9CgogICAgICAgIC8vIEFkYXB0aXZlIFNpbXBzb24gSW50ZWdyYXRpb24KICAgICAgICBmdW5jdGlvbiBpbnRlZ3JhdGUoZiwgYSwgYiwgZXBzID0gMWUtNSkgewogICAgICAgICAgICBjb25zdCBtaWQgPSAoYSArIGIpIC8gMiwgaCA9IChiIC0gYSkgLyAyOwogICAgICAgICAgICBjb25zdCBTID0gKGggLyAzKSAqIChmKGEpICsgNCAqIGYobWlkKSArIGYoYikpOwogICAgICAgICAgICBmdW5jdGlvbiByZWMobCwgciwgZSwgU193aG9sZSwgZCkgewogICAgICAgICAgICAgICAgaWYgKGQgPiAxNSkgcmV0dXJuIFNfd2hvbGU7CiAgICAgICAgICAgICAgICBjb25zdCBtID0gKGwgKyByKSAvIDIsIGggPSAociAtIGwpIC8gMjsKICAgICAgICAgICAgICAgIGNvbnN0IExTID0gKGggLyA2KSAqIChmKGwpICsgNCAqIGYoKGwgKyBtKSAvIDIpICsgZihtKSk7CiAgICAgICAgICAgICAgICBjb25zdCBSUyA9IChoIC8gNikgKiAoZihtKSArIDQgKiBmKChtICsgcikgLyAyKSArIGYocikpOwogICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKExTICsgUlMgLSBTX3dob2xlKSA8PSAxNSAqIGUpIHJldHVybiBMUyArIFJTICsgKExTICsgUlMgLSBTX3dob2xlKSAvIDE1OwogICAgICAgICAgICAgICAgcmV0dXJuIHJlYyhsLCBtLCBlIC8gMiwgTFMsIGQgKyAxKSArIHJlYyhtLCByLCBlIC8gMiwgUlMsIGQgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVjKGEsIGIsIGVwcywgUywgMCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjYWxjdWxhdGVCb3VuZGVkKGYxLCBmMiwgZjMpIHsKICAgICAgICAgICAgLy8gMS4gRmluZCBhbGwgcGFpciBpbnRlcnNlY3Rpb25zCiAgICAgICAgICAgIGNvbnN0IHIxMiA9IGZpbmRSb290cyhmMSwgZjIpLm1hcCh4ID0+ICh7IHgsIHk6IGYxKHgpLCBwYWlyOiBbMSwgMl0gfSkpOwogICAgICAgICAgICBjb25zdCByMjMgPSBmaW5kUm9vdHMoZjIsIGYzKS5tYXAoeCA9PiAoeyB4LCB5OiBmMih4KSwgcGFpcjogWzIsIDNdIH0pKTsKICAgICAgICAgICAgY29uc3QgcjMxID0gZmluZFJvb3RzKGYzLCBmMSkubWFwKHggPT4gKHsgeCwgeTogZjMoeCksIHBhaXI6IFszLCAxXSB9KSk7CgogICAgICAgICAgICBsZXQgYWxsID0gWy4uLnIxMiwgLi4ucjIzLCAuLi5yMzFdOwogICAgICAgICAgICBhbGwuc29ydCgoYSwgYikgPT4gYS54IC0gYi54KTsKCiAgICAgICAgICAgIC8vIEZpbHRlciBkdXBsaWNhdGVzIChzYW1lIHBvaW50IGZvdW5kIGJ5IGRpZmZlcmVudCBwYWlycz8gcmFyZSB1bmxlc3MgdHJpcGxlIGludGVyc2VjdGlvbikKICAgICAgICAgICAgYWxsID0gYWxsLmZpbHRlcigodiwgaSkgPT4gaSA9PT0gMCB8fCBNYXRoLmFicyh2LnggLSBhbGxbaSAtIDFdLngpID4gMC4wMSk7CgogICAgICAgICAgICBpZiAoYWxsLmxlbmd0aCA8IDIpIHJldHVybiB7IGVycm9yOiAiRmV3ZXIgdGhhbiAyIGludGVyc2VjdGlvbiBwb2ludHMgZm91bmQgaW4gcmFuZ2UgWy0xMCwgMTBdLiIgfTsKCiAgICAgICAgICAgIC8vIDIuIElkZW50aWZ5IGxpa2VseSByZWdpb24gdmVydGljZXMgKFRyaWFuZ2xlIG9yIExlbnMpCiAgICAgICAgICAgIC8vIEhldXJpc3RpYzogVXNlIHRoZSAzIGludGVyc2VjdGlvbiBwb2ludHMgdGhhdCBhcmUgY2xvc2VzdCB0byBlYWNoIG90aGVyPwogICAgICAgICAgICAvLyBPciBzaW1wbHkgdGFrZSB0aGUgZmlyc3QgMyBpZiB2YWxpZD8KICAgICAgICAgICAgLy8gTGV0J3MgdHJ5IHRvIGZvcm0gYSBjbG9zZWQgY3ljbGUuCiAgICAgICAgICAgIC8vIEZvciBhIHN0YW5kYXJkICIzIGxpbmVzIHRyaWFuZ2xlIiwgd2UgZXhwZWN0IGV4YWN0bHkgMyBpbnRlcnNlY3Rpb25zLgogICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG1vcmUgKGUuZy4gc2luIHdhdmVzKSwgd2UgdGFrZSB0aGUgc2V0IGNlbnRlcmVkIGFyb3VuZCAwLgogICAgICAgICAgICAvLyBMZXQncyB0YWtlIHRoZSBzdWJzZXQgb2YgcG9pbnRzIHdpdGggc21hbGxlc3Qgc3Bhbi4KCiAgICAgICAgICAgIGxldCBiZXN0U2V0ID0gW107CiAgICAgICAgICAgIGxldCBtaW5TcGFuID0gSW5maW5pdHk7CgogICAgICAgICAgICAvLyBUcnkgdG8gZmluZCAzIHBvaW50cwogICAgICAgICAgICBpZiAoYWxsLmxlbmd0aCA+PSAzKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBhbGwubGVuZ3RoIC0gMzsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IGFsbFtpICsgMl0ueCAtIGFsbFtpXS54OwogICAgICAgICAgICAgICAgICAgIGlmIChzcGFuIDwgbWluU3BhbikgeyBtaW5TcGFuID0gc3BhbjsgYmVzdFNldCA9IFthbGxbaV0sIGFsbFtpICsgMV0sIGFsbFtpICsgMl1dOyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWxsLmxlbmd0aCA9PT0gMikgewogICAgICAgICAgICAgICAgYmVzdFNldCA9IGFsbDsgLy8gTGVucyBzaGFwZSAoMiBjdXJ2ZXMgaW50ZXJzZWN0LCAzcmQgaXMgcmVkdW5kYW50IG9yIGJvdW5kcyBvdXRzaWRlPykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gMy4gSW50ZWdyYXRlIHNlZ21lbnRzCiAgICAgICAgICAgIC8vIFdlIGhhdmUgWCBjb29yZGluYXRlczogeDAsIHgxLCB4Mi4uLgogICAgICAgICAgICAvLyBSZWdpb24gQXJlYSA9IFN1bSBvZiBpbnRlZ3JhbHMuCiAgICAgICAgICAgIC8vIEluIGVhY2ggaW50ZXJ2YWwgKHhfaSwgeF97aSsxfSksIHdlIG5lZWQgdG8gZGVjaWRlICJUb3AiIGFuZCAiQm90dG9tIi4KICAgICAgICAgICAgLy8gU3RyYXRlZ3k6ICJHZW9tZXRyaWMgQXJlYSBvZiBFbmNsb3NlZCBSZWdpb24iIHVzdWFsbHkgbWVhbnMgTWVkaWFuIC0gTWluICBPUiBNYXggLSBNZWRpYW4uCiAgICAgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSBQb2x5QXJlYSBvZiB0aGUgdHJpYW5nbGUgZm9ybWVkIGJ5IHRoZSBpbnRlcnNlY3Rpb24gcG9pbnRzIGFzIGEgYmFzZWxpbmUuCiAgICAgICAgICAgIC8vIFBvbHlBcmVhID0gMC41ICogfHgxKHkyLXkzKSArIC4uLnwKCiAgICAgICAgICAgIGxldCBwb2x5QXJlYSA9IDA7CiAgICAgICAgICAgIGlmIChiZXN0U2V0Lmxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAgICAgY29uc3QgW3AxLCBwMiwgcDNdID0gYmVzdFNldDsKICAgICAgICAgICAgICAgIHBvbHlBcmVhID0gMC41ICogTWF0aC5hYnMocDEueCAqIChwMi55IC0gcDMueSkgKyBwMi54ICogKHAzLnkgLSBwMS55KSArIHAzLnggKiAocDEueSAtIHAyLnkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbGV0IGFyZWFNZWRNaW4gPSAwOwogICAgICAgICAgICBsZXQgYXJlYU1heE1lZCA9IDA7CgogICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IGJlc3RTZXQubGVuZ3RoIC0gMTsgaysrKSB7CiAgICAgICAgICAgICAgICBjb25zdCB4YSA9IGJlc3RTZXRba10ueDsKICAgICAgICAgICAgICAgIGNvbnN0IHhiID0gYmVzdFNldFtrICsgMV0ueDsKICAgICAgICAgICAgICAgIGlmICh4YiA8PSB4YSkgY29udGludWU7CgogICAgICAgICAgICAgICAgY29uc3QgbWlkWCA9ICh4YSArIHhiKSAvIDI7CiAgICAgICAgICAgICAgICBjb25zdCB2MSA9IGYxKG1pZFgpLCB2MiA9IGYyKG1pZFgpLCB2MyA9IGYzKG1pZFgpOwogICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IFt2MSwgdjIsIHYzXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7IC8vIE1pbiwgTWVkLCBNYXgKICAgICAgICAgICAgICAgIGNvbnN0IG1pbkYgPSB2YWxzWzBdLCBtZWRGID0gdmFsc1sxXSwgbWF4RiA9IHZhbHNbMl07CgogICAgICAgICAgICAgICAgLy8gV2hpY2ggZnVuY3Rpb24gY29ycmVzcG9uZHMgdG8gd2hpY2g/CiAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdmFsdWVzIGZvciBpbnRlZ3JhdGlvbi4KICAgICAgICAgICAgICAgIC8vIEFjdHVhbGx5LCB3ZSBjYW4gaW50ZWdyYXRlIHRoZSBmdW5jdGlvbnMgZHluYW1pY2FsbHk6CiAgICAgICAgICAgICAgICAvLyBJbnQoTWVkKHgpIC0gTWluKHgpKSBkeAoKICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmNNZWRNaW4gPSAoeCkgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IFtmMSh4KSwgZjIoeCksIGYzKHgpXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyclsxXSAtIGFyclswXTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBjb25zdCBmdW5jTWF4TWVkID0gKHgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBbZjEoeCksIGYyKHgpLCBmMyh4KV0uc29ydCgoYSwgYikgPT4gYSAtIGIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhcnJbMl0gLSBhcnJbMV07CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGFyZWFNZWRNaW4gKz0gaW50ZWdyYXRlKGZ1bmNNZWRNaW4sIHhhLCB4Yik7CiAgICAgICAgICAgICAgICBhcmVhTWF4TWVkICs9IGludGVncmF0ZShmdW5jTWF4TWVkLCB4YSwgeGIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBIZXVyaXN0aWMgRGVjaXNpb24KICAgICAgICAgICAgLy8gSWYgUG9seUFyZWEgaXMgZGVmaW5lZCwgcGljayB0aGUgb25lIGNsb3Nlc3QgdG8gaXQuCiAgICAgICAgICAgIC8vIElmIG5vdCAoZS5nLiBsZW5zKSwgcGljayB0aGUgc21hbGxlciBvbmU/IChCb3VuZGVkIHVzdWFsbHkgPCBVbmJvdW5kZWQvQmFja2dyb3VuZCkKICAgICAgICAgICAgLy8gVXN1YWxseSwgdGhlIGludGVyc2VjdGlvbiBsb2dpYyBpbXBsaWVzIHRoZSAic21hbGwiIHJlZ2lvbiBpcyB0aGUgdGFyZ2V0LgogICAgICAgICAgICAvLyBIb3dldmVyLCBpZiBQb2x5QXJlYSBleGlzdHMsIGl0J3MgYSB2ZXJ5IHN0cm9uZyBoaW50LgoKICAgICAgICAgICAgbGV0IGZpbmFsQXJlYSA9IDA7CiAgICAgICAgICAgIGxldCBtb2RlID0gIiI7CgogICAgICAgICAgICBpZiAoYmVzdFNldC5sZW5ndGggPT09IDMpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYxID0gTWF0aC5hYnMoYXJlYU1lZE1pbiAtIHBvbHlBcmVhKTsKICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYyID0gTWF0aC5hYnMoYXJlYU1heE1lZCAtIHBvbHlBcmVhKTsKICAgICAgICAgICAgICAgIGlmIChkaWZmMSA8IGRpZmYyKSB7IGZpbmFsQXJlYSA9IGFyZWFNZWRNaW47IG1vZGUgPSAiTWVkLU1pbiI7IH0KICAgICAgICAgICAgICAgIGVsc2UgeyBmaW5hbEFyZWEgPSBhcmVhTWF4TWVkOyBtb2RlID0gIk1heC1NZWQiOyB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyAyIHBvaW50cyBsZW5zIHVzdWFsbHkgbWVhbnMgTWF4IC0gTWluIChpZiAzcmQgaXMgYXdheSkgb3Igc2ltaWxhci4KICAgICAgICAgICAgICAgIC8vIElmIGxlbnMsIE1lZC1NaW4gKyBNYXgtTWVkID0gTWF4LU1pbi4KICAgICAgICAgICAgICAgIC8vIE9mdGVuIHRoZSByZWdpb24gaXMganVzdCAoTWF4LU1pbikgYmV0d2VlbiAyIGN1cnZlcz8KICAgICAgICAgICAgICAgIC8vIFdpdGggM3JkIGN1cnZlIGludm9sdmVkLCBpdCBjdXRzIHRoZSBsZW5zPwogICAgICAgICAgICAgICAgLy8gTGV0J3MgcGVyZm9ybSBhIHNpbXBsZSBjaGVjazogaXMgdGhlIDNyZCBjdXJ2ZSAiaW5zaWRlIiB0aGUgbGVucz8KICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gdGhlIHNtYWxsZXIgbm9uLXplcm8gYXJlYS4KICAgICAgICAgICAgICAgIGZpbmFsQXJlYSA9IE1hdGgubWluKGFyZWFNZWRNaW4sIGFyZWFNYXhNZWQpOwogICAgICAgICAgICAgICAgbW9kZSA9IChmaW5hbEFyZWEgPT09IGFyZWFNZWRNaW4pID8gIk1lZC1NaW4iIDogIk1heC1NZWQiOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4geyBhcmVhOiBmaW5hbEFyZWEsIHBvaW50czogYmVzdFNldCwgbW9kZSB9OwogICAgICAgIH0KCiAgICAgICAgLyogLS0tIFVJIEdsdWUgLS0tICovCiAgICAgICAgZnVuY3Rpb24gc29sdmUoKSB7CiAgICAgICAgICAgIGNvbnN0IHMxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZuMScpLnZhbHVlOwogICAgICAgICAgICBjb25zdCBzMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbjInKS52YWx1ZTsKICAgICAgICAgICAgY29uc3QgczMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZm4zJykudmFsdWU7CgogICAgICAgICAgICBjb25zdCBmMSA9IE1hdGhFbmdpbmUuY29tcGlsZShzMSk7CiAgICAgICAgICAgIGNvbnN0IGYyID0gTWF0aEVuZ2luZS5jb21waWxlKHMyKTsKICAgICAgICAgICAgY29uc3QgZjMgPSBNYXRoRW5naW5lLmNvbXBpbGUoczMpOwogICAgICAgICAgICBjb25zdCBlcnIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXJyb3JfbXNnJyk7CiAgICAgICAgICAgIGNvbnN0IHJlc0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNfYm94Jyk7CgogICAgICAgICAgICBpZiAoIWYxIHx8ICFmMiB8fCAhZjMpIHsKICAgICAgICAgICAgICAgIGVyci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsgZXJyLmlubmVyVGV4dCA9ICJFcnJvciBwYXJzaW5nIGZ1bmN0aW9ucy4gQ2hlY2sgc3ludGF4LiI7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNhbGN1bGF0ZUJvdW5kZWQoZjEsIGYyLCBmMyk7CiAgICAgICAgICAgIGlmIChyZXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgIGVyci5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsgZXJyLmlubmVyVGV4dCA9IHJlcy5lcnJvcjsKICAgICAgICAgICAgICAgIHJlc0JveC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVyci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICByZXNCb3guY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJlYV92YWwnKS5pbm5lclRleHQgPSByZXMuYXJlYS50b0ZpeGVkKDQpOwoKICAgICAgICAgICAgbGV0IHB0c0h0bWwgPSAiPHVsPiI7CiAgICAgICAgICAgIHJlcy5wb2ludHMuZm9yRWFjaCgocCwgaSkgPT4gewogICAgICAgICAgICAgICAgcHRzSHRtbCArPSBgPGxpPjxzdHJvbmc+UCR7aSArIDF9Ojwvc3Ryb25nPiAoJHtwLngudG9GaXhlZCgyKX0sICR7cC55LnRvRml4ZWQoMil9KTwvbGk+YDsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHB0c0h0bWwgKz0gIjwvdWw+IjsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BvaW50c19kZXRhaWxzJykuaW5uZXJIVE1MID0gcHRzSHRtbDsKCiAgICAgICAgICAgIGRyYXdHcmFwaChmMSwgZjIsIGYzLCByZXMucG9pbnRzLCByZXMubW9kZSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBkcmF3R3JhcGgoZjEsIGYyLCBmMywgcG9pbnRzLCBtb2RlKSB7CiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbG90Jyk7CiAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwogICAgICAgICAgICBjb25zdCB3ID0gY2FudmFzLnBhcmVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgICAgIGNvbnN0IGggPSBjYW52YXMucGFyZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHc7IGNhbnZhcy5oZWlnaHQgPSBoOwoKICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGJvdW5kcwogICAgICAgICAgICBsZXQgeHMgPSBwb2ludHMubWFwKHAgPT4gcC54KTsKICAgICAgICAgICAgbGV0IG1pblggPSBNYXRoLm1pbiguLi54cyksIG1heFggPSBNYXRoLm1heCguLi54cyk7CiAgICAgICAgICAgIGNvbnN0IHBhZCA9IChtYXhYIC0gbWluWCkgKiAwLjQgfHwgMjsKICAgICAgICAgICAgbWluWCAtPSBwYWQ7IG1heFggKz0gcGFkOwoKICAgICAgICAgICAgLy8gU2FtcGxlIFkgdG8gZGV0ZXJtaW5lIFkgYm91bmRzCiAgICAgICAgICAgIGxldCBtaW5ZID0gSW5maW5pdHksIG1heFkgPSAtSW5maW5pdHk7CiAgICAgICAgICAgIGZvciAobGV0IHggPSBtaW5YOyB4IDw9IG1heFg7IHggKz0gKG1heFggLSBtaW5YKSAvIDIwKSB7CiAgICAgICAgICAgICAgICBbZjEsIGYyLCBmM10uZm9yRWFjaChmID0+IHsgY29uc3QgeSA9IGYoeCk7IGlmIChpc0Zpbml0ZSh5KSkgeyBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7IG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTsgfSB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzRmluaXRlKG1pblkpKSB7IG1pblkgPSAtNTsgbWF4WSA9IDU7IH0KICAgICAgICAgICAgY29uc3QgcmFuZ2VZID0gKG1heFkgLSBtaW5ZKSAqIDEuMiB8fCAxMDsKICAgICAgICAgICAgY29uc3QgbWlkWSA9IChtaW5ZICsgbWF4WSkgLyAyOwogICAgICAgICAgICBtaW5ZID0gbWlkWSAtIHJhbmdlWSAvIDI7IG1heFkgPSBtaWRZICsgcmFuZ2VZIC8gMjsKCiAgICAgICAgICAgIGNvbnN0IHRvQ3ggPSB4ID0+ICh4IC0gbWluWCkgLyAobWF4WCAtIG1pblgpICogdzsKICAgICAgICAgICAgY29uc3QgdG9DeSA9IHkgPT4gaCAtICh5IC0gbWluWSkgLyAobWF4WSAtIG1pblkpICogaDsKCiAgICAgICAgICAgIC8vIERyYXcgQXhlcwogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI2NjYyc7CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgY29uc3Qgb3kgPSB0b0N5KDApLCBveCA9IHRvQ3goMCk7CiAgICAgICAgICAgIGN0eC5tb3ZlVG8oMCwgb3kpOyBjdHgubGluZVRvKHcsIG95KTsKICAgICAgICAgICAgY3R4Lm1vdmVUbyhveCwgMCk7IGN0eC5saW5lVG8ob3gsIGgpOwogICAgICAgICAgICBjdHguc3Ryb2tlKCk7CgogICAgICAgICAgICAvLyBIZWxwZXIgdG8gZHJhdyBjdXJ2ZQogICAgICAgICAgICBmdW5jdGlvbiBwbG90KGYsIGNvbG9yKSB7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjb2xvcjsKICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAyOwogICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgeCA9IG1pblg7IHggPD0gbWF4WDsgeCArPSAobWF4WCAtIG1pblgpIC8gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgeSA9IGYoeCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHggPT09IG1pblgpIGN0eC5tb3ZlVG8odG9DeCh4KSwgdG9DeSh5KSk7CiAgICAgICAgICAgICAgICAgICAgZWxzZSBjdHgubGluZVRvKHRvQ3goeCksIHRvQ3koeSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBEcmF3IFJlZ2lvbiAoU2hhZGluZykKICAgICAgICAgICAgLy8gV2Ugc2hhZGUgYnkgaW50ZWdyYXRpbmcgdmVydGljYWwgc3RyaXBzCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgxOTQsIDI0LCA5MSwgMC4yKSc7IC8vIFBpbmtpc2ggc2hhZGUKICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gcG9pbnRzWzBdLng7CiAgICAgICAgICAgIGNvbnN0IGVuZFggPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLng7CgogICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgIGxldCBzdGFydGVkID0gZmFsc2U7CiAgICAgICAgICAgIC8vIFN0ZXAgdGhyb3VnaCBwaXhlbHMKICAgICAgICAgICAgY29uc3Qgc3RlcCA9IChlbmRYIC0gc3RhcnRYKSAvIDE1MDsKICAgICAgICAgICAgZm9yIChsZXQgeCA9IHN0YXJ0WDsgeCA8PSBlbmRYOyB4ICs9IHN0ZXApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSBbZjEoeCksIGYyKHgpLCBmMyh4KV0uc29ydCgoYSwgYikgPT4gYSAtIGIpOwogICAgICAgICAgICAgICAgbGV0IHlUb3AsIHlCb3Q7CiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gIk1lZC1NaW4iKSB7IHlUb3AgPSB2YWxzWzFdOyB5Qm90ID0gdmFsc1swXTsgfQogICAgICAgICAgICAgICAgZWxzZSB7IHlUb3AgPSB2YWxzWzJdOyB5Qm90ID0gdmFsc1sxXTsgfSAvLyBNYXgtTWVkCgogICAgICAgICAgICAgICAgY29uc3QgY3ggPSB0b0N4KHgpLCBjeVRvcCA9IHRvQ3koeVRvcCksIGN5Qm90ID0gdG9DeSh5Qm90KTsKICAgICAgICAgICAgICAgIGlmICghc3RhcnRlZCkgeyBjdHgubW92ZVRvKGN4LCBjeUJvdCk7IHN0YXJ0ZWQgPSB0cnVlOyB9CiAgICAgICAgICAgICAgICBjdHgubGluZVRvKGN4LCBjeVRvcCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gVHJhY2UgYmFjayBib3R0b20KICAgICAgICAgICAgZm9yIChsZXQgeCA9IGVuZFg7IHggPj0gc3RhcnRYOyB4IC09IHN0ZXApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHZhbHMgPSBbZjEoeCksIGYyKHgpLCBmMyh4KV0uc29ydCgoYSwgYikgPT4gYSAtIGIpOwogICAgICAgICAgICAgICAgbGV0IHlCb3Q7CiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gIk1lZC1NaW4iKSB7IHlCb3QgPSB2YWxzWzBdOyB9CiAgICAgICAgICAgICAgICBlbHNlIHsgeUJvdCA9IHZhbHNbMV07IH0KICAgICAgICAgICAgICAgIGNvbnN0IGN4ID0gdG9DeCh4KSwgY3lCb3QgPSB0b0N5KHlCb3QpOwogICAgICAgICAgICAgICAgY3R4LmxpbmVUbyhjeCwgY3lCb3QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgY3R4LmZpbGwoKTsKCiAgICAgICAgICAgIHBsb3QoZjEsICcjMTk3NmQyJyk7CiAgICAgICAgICAgIHBsb3QoZjIsICcjZDMyZjJmJyk7CiAgICAgICAgICAgIHBsb3QoZjMsICcjMzg4ZTNjJyk7CgogICAgICAgICAgICAvLyBEcmF3IFZlcnRpY2VzCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSAnI0MyMTg1Qic7CiAgICAgICAgICAgIHBvaW50cy5mb3JFYWNoKHAgPT4gewogICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmFyYyh0b0N4KHAueCksIHRvQ3kocC55KSwgNCwgMCwgTWF0aC5QSSAqIDIpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBJbml0CiAgICAgICAgd2luZG93Lm9ubG9hZCA9IHNvbHZlOwogICAgPC9zY3JpcHQ+CgogICAgPCEtLSAuLi4gKFJlc3Qgb2YgSFRNTCBzdHJ1Y3R1cmUpIC4uLiAtLT4KICAgIDwhLS0gRnVsbCBsb2dpY2FsIGltcGxlbWVudGF0aW9uIGluIHRoZSB3cml0ZV90b19maWxlIC0tPgoKPC9ib2R5PgoKPC9odG1sPg==”; var htmlContent = “”; try { htmlContent = atob(b64); } catch (e) { console.error(“Base64 decode failed”, e); wrapper.innerHTML = ” Error loading calculator. “; return; } // Create Iframe var iframe = document.createElement(‘iframe’); iframe.style.width = “100%”; iframe.style.border = “none”; iframe.style.overflow = “hidden”; iframe.scrolling = “no”; iframe.style.minHeight = “400px”;…

  • Land Area Calculator – Find Plot Size in Sq Ft, Acres & More (Fast & Easy)

    Land Area Calculator Calculate irregular 4-sided plot areas using simple measurements or coordinates. Unit Meters (m)Feet (ft)Yards (yd) Sides + Diagonal Sides + Angle Coordinates 📐 Measure 4 sides and 1 diagonal for best accuracy without a surveyor. Side A Side B Side C Side D Diagonal (Corner 1 to 3) Connects start of Side…

  • Second Moment of Area Calculator – Quick Structural Section MOI Tool

    Second Moment of Area Calculator Second Moment of Area Calculator Calculate Moment of Inertia (I), Centroid (C), and Area (A) Rect Box Circle Tube I-Beam T-Beam Channel Dimensions Properties mmincmmft Ix (About X-Axis) 0 mm⁴ Iy (About Y-Axis) 0 mm⁴ Area (A) 0 mm² Centroid (Cx, Cy) 0, 0 from bottom-left (mm) Explanation: Ix: Resistance…