General Prism Calculator — Volume & Surface Area of Any Prism

General Prism Surface Area Calculator

General Prism Calc

Calculate Surface Area & Volume for any Regular Prism.

Triangle
Rectangle
Pentagon
Hexagon
Octagon
Custom
Open Prism (No Top/Bottom Faces)
Total Surface Area
sq in
Base Area
sq in
Lateral Area
sq in
Volume
cu in

Work Shown

 

A prism is a three-dimensional shape that has two identical, parallel bases and flat side faces that connect them. The bases can be any shape, such as a triangle, rectangle, pentagon, or even an irregular polygon. The side faces are usually rectangles.

Related Calculator:  Reverse Area Calculator | How to Find Quickly

Because prisms appear in boxes, containers, building parts, and many engineering designs, it is important to know how to calculate their volume and surface area.

When the base shape is not a simple rectangle or triangle, manual calculations can become confusing. A General Prism Calculator solves this problem by using universal prism formulas. You only need the area of the base, the perimeter of the base, and the height of the prism to get accurate results.

This guide explains how the calculator works, the formulas it uses, and how to apply them with clear examples.

What the General Prism Calculator Is

A General Prism Calculator is an online tool that calculates the volume and surface area of any prism, no matter what shape the base has.

Instead of asking for every side of the base, it usually asks for:

  • Area of the base

  • Perimeter of the base

  • Height of the prism

With these three values, the calculator can handle triangular prisms, rectangular prisms, hexagonal prisms, and even irregular-base prisms.

How the General Prism Calculator Works

Inputs You Enter

Most general prism calculators ask for:

  • Base area (A₍base₎) – the area of one flat base

  • Base perimeter (P₍base₎) – the total length around the base

  • Height (h) – the distance between the two bases

Related Calculator:  Paint Coverage Calculator — How Much Paint You Need

You can usually select the unit, such as meters, centimeters, or inches.

Calculation Process

The calculator follows these steps:

  1. Uses the base area to calculate volume

  2. Uses the base perimeter to calculate side surface area

  3. Adds base and side areas for total surface area

Output You Get

You receive:

  • Volume of the prism

  • Surface area of the prism

The results are shown in cubic and square units.

Key Formulas Used

Volume of a Prism

V = A_{base} \times h

Where:

  • V = Volume

  • A₍base₎ = Area of the base

  • h = Height of the prism

This formula works for all prisms because the cross-section is the same along the height.

Surface Area of a Prism

SA = 2A_{base} + (P_{base} \times h)

Where:

  • SA = Total surface area

  • P₍base₎ = Perimeter of the base

The first part counts both bases. The second part counts all side faces.

Step-by-Step Examples

Example 1: Triangular Prism

Base area = 20 cm²
Base perimeter = 18 cm
Height = 10 cm

Volume:

V = 20 \times 10 = 200 \text{ cm}^3

Surface area:

SA = 2(20) + (18 \times 10) SA = 40 + 180 = 220 \text{ cm}^2

Example 2: Rectangular Prism

Base area = 50 m²
Base perimeter = 30 m
Height = 4 m

Volume:

V = 50 \times 4 = 200 \text{ m}^3

Surface area:

SA = 2(50) + (30 \times 4) SA = 100 + 120 = 220 \text{ m}^2

Example 3: Hexagonal Prism

Base area = 60 cm²
Base perimeter = 24 cm
Height = 8 cm

V = 60 \times 8 = 480 \text{ cm}^3 SA = 2(60) + (24 \times 8) = 120 + 192 = 312 \text{ cm}^2

Features of the General Prism Calculator

Works for Any Base Shape

You can use it for triangular, rectangular, pentagonal, or irregular prisms.

Related Calculator:  Map Area Calculator – Measure Any Region on a Map Easily

Simple Inputs

Only base area, perimeter, and height are needed.

Fast Results

Calculations are done instantly.

Accurate Geometry

Uses standard prism formulas.

Unit Support

Works with metric and imperial units.

Uses and Applications

Education

Students use it for geometry homework and exams.

Architecture

Helps calculate building sections and structures.

Engineering

Used in design of beams, ducts, and containers.

Packaging

Helps find box volume and material surface area.

Manufacturing

Used to estimate material needs.

Helpful Tips for Best Results

Find Base Area Correctly

Use the correct formula for the base shape.

Measure Perimeter Carefully

Add all base sides accurately.

Keep Units Consistent

Use the same unit for all values.

Measure Height Vertically

Height is the distance between the bases.

Avoid Early Rounding

Round only at the final step.

Common Mistakes to Avoid

Using Wrong Base Area

Incorrect base area gives wrong volume.

Forgetting One Base

Surface area includes two bases.

Mixing Units

Do not mix cm and m.

Using Slanted Height

Use perpendicular height only.

Confusing with Pyramids

Prisms have equal cross-sections.

Frequently Asked Questions

What Is a Prism?

A 3D shape with two equal, parallel bases.

Does This Work for All Prisms?

Yes, if the prism is a right prism.

What If My Base Is Irregular?

Find its area and perimeter first.

Is Height the Same as Edge Length?

Only if the prism is vertical.

Is the Calculator Accurate?

Yes, with correct inputs.

Final Words

The General Prism Calculator is a powerful and flexible tool for finding the volume and surface area of any prism. It works for simple and complex base shapes, making geometry calculations easy for students, engineers, and designers.

By entering just the base area, base perimeter, and height, you can get fast, reliable results without complicated math. Whether you are solving homework, planning a design, or estimating materials, this calculator saves time and improves accuracy.

Similar Posts

  • Pipe Area Calculator — Cross‑Section & Surface Area Made Easy

    Pipe Area Calculator Pipe Area Calculator Calculate Surface Area for Painting & Internal Area for Flow Exterior Surface (Painting) Internal Flow / Volume Outer Diameter (OD) inmmcm Inner Diameter (ID) inmmcm Or calculate from OD – 2*Wall Pipe Length ftmin Surface Area Results Exterior Surface Area 0 sq ft Area in Sq Meters 0 sq…

  • Area of Function Calculator – Find Area Under Any Curve

    // Base64 Content var b64 = “PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkFyZWEgb2YgRnVuY3Rpb24gQ2FsY3VsYXRvcjwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLXByaW1hcnk6ICM2MjAwZWE7CiAgICAgICAgICAgIC8qIERlZXAgUHVycGxlICovCiAgICAgICAgICAgIC0tcHJpbWFyeS1saWdodDogI2IzODhmZjsKICAgICAgICAgICAgLS1zZWNvbmRhcnk6ICMwMGJmYTU7CiAgICAgICAgICAgIC8qIFRlYWwgKi8KICAgICAgICAgICAgLS1iZy1wYWdlOiAjZjlmOWY5OwogICAgICAgICAgICAtLWJnLWNhcmQ6ICNmZmZmZmY7CiAgICAgICAgICAgIC0tdGV4dC1kYXJrOiAjMjEyMTIxOwogICAgICAgICAgICAtLXRleHQtZ3JheTogIzc1NzU3NTsKICAgICAgICAgICAgLS1ib3JkZXI6ICNlMGUwZTA7CiAgICAgICAgICAgIC0tc2hhZG93OiAwIDRweCA2cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMSk7CiAgICAgICAgfQoKICAgICAgICAqIHsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjsKICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1wYWdlKTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQoKICAgICAgICAuY2FsYy1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctY2FyZCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdyk7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDc1MHB4OwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBnYXA6IDI1cHg7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyIGgyIHsKICAgICAgICAgICAgbWFyZ2luOiAwIDAgNXB4IDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWRhcmspOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyIHAgewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWdyYXkpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CgogICAgICAgIC8qIENvbnRleHQgQ29udGV4dCBDb250ZXh0ICovCiAgICAgICAgLmNvbnRleHQtc2VsZWN0b3IgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjNlNWY1OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMWJlZTc7CiAgICAgICAgfQoKICAgICAgICAuY29udGV4dC1sYWJlbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIH0KCiAgICAgICAgc2VsZWN0LmZ1bGwtc2VsZWN0IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfQoKICAgICAgICAvKiBJbnB1dCBHcmlkICovCiAgICAgICAgLmlucHV0LXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWdyb3VwIHsKICAgICAgICAgICAgZmxleDogMTsKICAgICAgICAgICAgbWluLXdpZHRoOiAxODBweDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1ncm91cCBsYWJlbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWRhcmspOwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWJveCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5wcmVmaXggewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IDEwcHg7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWdyYXkpOwogICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICB9CgogICAgICAgIGlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMTJweCAxMnB4IDQ1cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJvcmRlciAwLjJzOwogICAgICAgIH0KCiAgICAgICAgaW5wdXQuc2ltcGxlIHsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxMnB4OwogICAgICAgIH0KCiAgICAgICAgaW5wdXQ6Zm9jdXMsCiAgICAgICAgc2VsZWN0OmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoOTgsIDAsIDIzNCwgMC4xKTsKICAgICAgICB9CgogICAgICAgIC8qIEJ1dHRvbiAqLwogICAgICAgIGJ1dHRvbi5hY3Rpb24tYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xczsKICAgICAgICB9CgogICAgICAgIGJ1dHRvbi5hY3Rpb24tYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzUwMDBkNjsKICAgICAgICB9CgogICAgICAgIGJ1dHRvbi5hY3Rpb24tYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpOwogICAgICAgIH0KCiAgICAgICAgLyogR3JhcGggKi8KICAgICAgICAuY2hhcnQtYm94IHsKICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgfQoKICAgICAgICAubGVnZW5kIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWdyYXkpOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3VsdCAqLwogICAgICAgIC5vdXRjb21lIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2UwZjJmMTsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCB2YXIoLS1zZWNvbmRhcnkpOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2xpZGVJbiAwLjNzOwogICAgICAgIH0KCiAgICAgICAgLm91dGNvbWUudmlzaWJsZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLnJlc3VsdC1sYWJlbCB7CiAgICAgICAgICAgIGNvbG9yOiAjMDA2OTVjOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICB9CgogICAgICAgIC5yZXN1bHQtdmFsIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07CiAgICAgICAgICAgIGNvbG9yOiAjMDA0ZDQwOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBtYXJnaW46IDVweCAwIDEwcHggMDsKICAgICAgICB9CgogICAgICAgIC5yZXN1bHQtZXhwbCB7CiAgICAgICAgICAgIGNvbG9yOiAjMDA3OTZiOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDEyMSwgMTA3LCAwLjIpOwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweDsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc2xpZGVJbiB7CiAgICAgICAgICAgIGZyb20gewogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1cHgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZXJyb3IgewogICAgICAgICAgICBjb2xvcjogI2QzMmYyZjsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KCiAgICA8ZGl2IGNsYXNzPSJjYWxjLWNhcmQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxoMj5BcmVhIG9mIEZ1bmN0aW9uIENhbGN1bGF0b3I8L2gyPgogICAgICAgICAgICA8cD5DYWxjdWxhdGUgdGhlIGFjY3VtdWxhdGVkIHZhbHVlIChBcmVhKSBvZiBhIGZ1bmN0aW9uIG92ZXIgYW4gaW50ZXJ2YWwuPC9wPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIEFwcGxpY2F0aW9uIENvbnRleHQgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dC1zZWxlY3RvciI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29udGV4dC1sYWJlbCI+QXBwbGljYXRpb24gQ29udGV4dDwvbGFiZWw+CiAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImFwcF9jb250ZXh0IiBjbGFzcz0iZnVsbC1zZWxlY3QiIG9uY2hhbmdlPSJ1cGRhdGVDb250ZXh0KCkiPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZ2VuZXJpYyI+R2VuZXJpYyBNYXRoIChBcmVhIHVuZGVyIEN1cnZlKTwvb3B0aW9uPgogICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0idmVsb2NpdHkiPlBoeXNpY3M6IFZlbG9jaXR5IHRvIERpc3RhbmNlPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJncm93dGgiPkVjb25vbWljczogR3Jvd3RoIFJhdGUgdG8gVG90YWwgR3Jvd3RoPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJmbG93Ij5FbmdpbmVlcmluZzogRmxvdyBSYXRlIHRvIFRvdGFsIFZvbHVtZTwvb3B0aW9uPgogICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBJbnB1dHMgLS0+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAyMHB4OyI+CiAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9ImxibF9mdW5jIj5GdW5jdGlvbiBmKHgpOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ib3giPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwcmVmaXgiPmYoeCk9PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZnVuY19pbiIgdmFsdWU9InheMiIgcGxhY2Vob2xkZXI9ImUuZy4geF4yLCBzaW4oeCkiPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtcm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9ImxibF9zdGFydCI+U3RhcnQgKGEpOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9InZhbF9hIiBjbGFzcz0ic2ltcGxlIiB2YWx1ZT0iMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgaWQ9ImxibF9lbmQiPkVuZCAoYik6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBpZD0idmFsX2IiIGNsYXNzPSJzaW1wbGUiIHZhbHVlPSIzIj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYWN0aW9uLWJ0biIgaWQ9ImJ0bl9jYWxjIiBvbmNsaWNrPSJjYWxjdWxhdGUoKSI+Q2FsY3VsYXRlIEFjY3VtdWxhdGlvbjwvYnV0dG9uPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yIiBpZD0iZXJyb3JfbXNnIj48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ib3V0Y29tZSIgaWQ9InJlc3VsdF9ib3giPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXN1bHQtbGFiZWwiIGlkPSJyZXNfbGJsIj5SZXN1bHQ8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzdWx0LXZhbCIgaWQ9InJlc192YWwiPi0tPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc3VsdC1leHBsIiBpZD0icmVzX2V4cGwiPjwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIFZpc3VhbCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJjaGFydC1ib3giPgogICAgICAgICAgICA8Y2FudmFzIGlkPSJncmFwaENhbnZhcyI+PC9jYW52YXM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kIiBpZD0ibGVnZW5kX3R4dCI+U2hhZGVkIHJlZ2lvbiByZXByZXNlbnRzIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZTwvZGl2PgoKICAgIDwvZGl2PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgLyogLS0tIFJvYnVzdCBNYXRoIFBhcnNlciAoQVNUIC0gTm8gRXZhbCkgLS0tICovCiAgICAgICAgY29uc3QgTWF0aEVuZ2luZSA9ICgoKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IFRva2VuID0geyBOdW1iZXI6IDEsIElkZW50aWZpZXI6IDIsIE9wZXJhdG9yOiAzLCBMUGFyZW46IDQsIFJQYXJlbjogNSwgRU9GOiA2IH07CiAgICAgICAgICAgIGZ1bmN0aW9uIHRva2VuaXplKHN0cikgewogICAgICAgICAgICAgICAgY29uc3QgdG9rZW5zID0gW107CiAgICAgICAgICAgICAgICBsZXQgaSA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IHN0ci5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyID0gc3RyW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICgvXHMvLnRlc3QoY2hhcikpIHsgaSsrOyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGlmICgvWzAtOS5dLy50ZXN0KGNoYXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW0gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoICYmIC9bMC05Ll0vLnRlc3Qoc3RyW2ldKSkgbnVtICs9IHN0cltpKytdOwogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFRva2VuLk51bWJlciwgdmFsdWU6IHBhcnNlRmxvYXQobnVtKSB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKC9bYS16QS1aXS8udGVzdChjaGFyKSkgewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoICYmIC9bYS16QS1aMC05XS8udGVzdChzdHJbaV0pKSBpZCArPSBzdHJbaSsrXTsKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBUb2tlbi5JZGVudGlmaWVyLCB2YWx1ZTogaWQudG9Mb3dlckNhc2UoKSB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCcrLSovXicuaW5jbHVkZXMoY2hhcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBUb2tlbi5PcGVyYXRvciwgdmFsdWU6IGNoYXIgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICcoJykgeyB0b2tlbnMucHVzaCh7IHR5cGU6IFRva2VuLkxQYXJlbiB9KTsgaSsrOyB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gJyknKSB7IHRva2Vucy5wdXNoKHsgdHlwZTogVG9rZW4uUlBhcmVuIH0pOyBpKys7IH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGkrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogVG9rZW4uRU9GIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKHRva2VucykgeyB0aGlzLnRva2VucyA9IHRva2VuczsgdGhpcy5wb3MgPSAwOyB9CiAgICAgICAgICAgICAgICBwZWVrKCkgeyByZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3NdOyB9CiAgICAgICAgICAgICAgICBjb25zdW1lKCkgeyByZXR1cm4gdGhpcy50b2tlbnNbdGhpcy5wb3MrK107IH0KICAgICAgICAgICAgICAgIHBhcnNlRXhwcigpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IHRoaXMucGFyc2VUZXJtKCk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMucGVlaygpLnZhbHVlID09PSAnKycgfHwgdGhpcy5wZWVrKCkudmFsdWUgPT09ICctJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcCA9IHRoaXMuY29uc3VtZSgpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0geyB0eXBlOiAnQmluYXJ5Jywgb3AsIGxlZnQsIHJpZ2h0OiB0aGlzLnBhcnNlVGVybSgpIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGFyc2VUZXJtKCkgewogICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID0gdGhpcy5wYXJzZUZhY3RvcigpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzLnBlZWsoKS52YWx1ZSA9PT0gJyonIHx8IHRoaXMucGVlaygpLnZhbHVlID09PSAnLycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3AgPSB0aGlzLmNvbnN1bWUoKS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IHsgdHlwZTogJ0JpbmFyeScsIG9wLCBsZWZ0LCByaWdodDogdGhpcy5wYXJzZUZhY3RvcigpIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGFyc2VGYWN0b3IoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPSB0aGlzLnBhcnNlQmFzZSgpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlZWsoKS52YWx1ZSA9PT0gJ14nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0geyB0eXBlOiAnQmluYXJ5Jywgb3A6ICdeJywgbGVmdCwgcmlnaHQ6IHRoaXMucGFyc2VGYWN0b3IoKSB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBhcnNlQmFzZSgpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gdGhpcy5wZWVrKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudHlwZSA9PT0gVG9rZW4uTnVtYmVyKSByZXR1cm4geyB0eXBlOiAnTGl0JywgdmFsdWU6IHRoaXMuY29uc3VtZSgpLnZhbHVlIH07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5jb25zdW1lKCkudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBlZWsoKS50eXBlID09PSBUb2tlbi5MUGFyZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJnID0gdGhpcy5wYXJzZUV4cHIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogJ0NhbGwnLCBuYW1lLCBhcmcgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ3gnIHx8IG5hbWUgPT09ICd0JykgcmV0dXJuIHsgdHlwZTogJ1ZhcicgfTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdwaScpIHJldHVybiB7IHR5cGU6ICdMaXQnLCB2YWx1ZTogTWF0aC5QSSB9OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2UnKSByZXR1cm4geyB0eXBlOiAnTGl0JywgdmFsdWU6IE1hdGguRSB9OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnTGl0JywgdmFsdWU6IDAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHQudHlwZSA9PT0gVG9rZW4uTFBhcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlID0gdGhpcy5wYXJzZUV4cHIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodC52YWx1ZSA9PT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtZSgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnVW5hcnknLCBvcDogJy0nLCBhcmc6IHRoaXMucGFyc2VCYXNlKCkgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lKCk7IHJldHVybiB7IHR5cGU6ICdMaXQnLCB2YWx1ZTogMCB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcGFyc2UoKSB7IHJldHVybiB0aGlzLnBhcnNlRXhwcigpOyB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGV2YWxOb2RlKG4sIHgpIHsKICAgICAgICAgICAgICAgIGlmICghbikgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnTGl0JykgcmV0dXJuIG4udmFsdWU7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnVmFyJykgcmV0dXJuIHg7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnQmluYXJ5JykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSBldmFsTm9kZShuLmxlZnQsIHgpLCByID0gZXZhbE5vZGUobi5yaWdodCwgeCk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuLm9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJysnOiByZXR1cm4gbCArIHI7IGNhc2UgJy0nOiByZXR1cm4gbCAtIHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJyonOiByZXR1cm4gbCAqIHI7IGNhc2UgJy8nOiByZXR1cm4gbCAvIHI7IGNhc2UgJ14nOiByZXR1cm4gTWF0aC5wb3cobCwgcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG4udHlwZSA9PT0gJ1VuYXJ5JykgcmV0dXJuIC1ldmFsTm9kZShuLmFyZywgeCk7CiAgICAgICAgICAgICAgICBpZiAobi50eXBlID09PSAnQ2FsbCcpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gZXZhbE5vZGUobi5hcmcsIHgpOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobi5uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Npbic6IHJldHVybiBNYXRoLnNpbihhKTsgY2FzZSAnY29zJzogcmV0dXJuIE1hdGguY29zKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0YW4nOiByZXR1cm4gTWF0aC50YW4oYSk7IGNhc2UgJ3NxcnQnOiByZXR1cm4gTWF0aC5zcXJ0KGEpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhYnMnOiByZXR1cm4gTWF0aC5hYnMoYSk7IGNhc2UgJ2xuJzogcmV0dXJuIE1hdGgubG9nKGEpOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdleHAnOiByZXR1cm4gTWF0aC5leHAoYSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjb21waWxlOiAoc3RyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcih0b2tlbnMpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhc3QgPSBwYXJzZXIucGFyc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh4KSA9PiBldmFsTm9kZShhc3QsIHgpOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGw7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9KSgpOwoKICAgICAgICAvKiAtLS0gTG9naWMgLS0tICovCiAgICAgICAgY29uc3QgY3R4TGFiZWxzID0gewogICAgICAgICAgICBnZW5lcmljOiB7IGZ1bmM6ICJGdW5jdGlvbiBmKHgpOiIsIHN0YXJ0OiAiU3RhcnQgKGEpOiIsIGVuZDogIkVuZCAoYik6IiwgcmVzOiAiTmV0IEFyZWEiLCBidG46ICJDYWxjdWxhdGUgQXJlYSIsIHg6ICJ4IiwgeTogImYoeCkiIH0sCiAgICAgICAgICAgIHZlbG9jaXR5OiB7IGZ1bmM6ICJWZWxvY2l0eSB2KHQpOiIsIHN0YXJ0OiAiU3RhcnQgVGltZSAodDEpOiIsIGVuZDogIkVuZCBUaW1lICh0Mik6IiwgcmVzOiAiVG90YWwgRGlzdGFuY2UgKE5ldCkiLCBidG46ICJDYWxjdWxhdGUgRGlzdGFuY2UiLCB4OiAiVGltZSAodCkiLCB5OiAiVmVsb2NpdHkgKHYpIiB9LAogICAgICAgICAgICBncm93dGg6IHsgZnVuYzogIkdyb3d0aCBSYXRlIHIodCk6Iiwgc3RhcnQ6ICJTdGFydCBUaW1lOiIsIGVuZDogIkVuZCBUaW1lOiIsIHJlczogIlRvdGFsIEdyb3d0aCIsIGJ0bjogIkNhbGN1bGF0ZSBHcm93dGgiLCB4OiAiVGltZSIsIHk6ICJSYXRlIiB9LAogICAgICAgICAgICBmbG93OiB7IGZ1bmM6ICJGbG93IFJhdGUgZih0KToiLCBzdGFydDogIlN0YXJ0IFRpbWU6IiwgZW5kOiAiRW5kIFRpbWU6IiwgcmVzOiAiVG90YWwgVm9sdW1lIiwgYnRuOiAiQ2FsY3VsYXRlIFZvbHVtZSIsIHg6ICJUaW1lIiwgeTogIkZsb3cgUmF0ZSIgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQoKSB7CiAgICAgICAgICAgIGNvbnN0IHZhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBfY29udGV4dCcpLnZhbHVlOwogICAgICAgICAgICBjb25zdCBsYWJlbHMgPSBjdHhMYWJlbHNbdmFsXTsKCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYmxfZnVuYycpLmlubmVyVGV4dCA9IGxhYmVscy5mdW5jOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJsX3N0YXJ0JykuaW5uZXJUZXh0ID0gbGFiZWxzLnN0YXJ0OwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGJsX2VuZCcpLmlubmVyVGV4dCA9IGxhYmVscy5lbmQ7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5fY2FsYycpLmlubmVyVGV4dCA9IGxhYmVscy5idG47CgogICAgICAgICAgICAvLyBVcGRhdGUgcGxhY2Vob2xkZXIgbG9naWMgaWYgbmVlZGVkCiAgICAgICAgICAgIGNhbGN1bGF0ZSgpOyAvLyBDaGVjayBpZiB2YWxpZCB0byBhdXRvLXJlZHJhdwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYWRhcHRpdmVTaW1wc29ucyhmLCBhLCBiLCBlcHMgPSAxZS01KSB7CiAgICAgICAgICAgIGNvbnN0IG1pZCA9IChhICsgYikgLyAyLCBoID0gKGIgLSBhKSAvIDI7CiAgICAgICAgICAgIGNvbnN0IFMgPSAoaCAvIDMpICogKGYoYSkgKyA0ICogZihtaWQpICsgZihiKSk7CiAgICAgICAgICAgIGZ1bmN0aW9uIHJlYyhsLCByLCBlcHMsIFNfd2hvbGUsIGQpIHsKICAgICAgICAgICAgICAgIGlmIChkID4gMTIpIHJldHVybiBTX3dob2xlOwogICAgICAgICAgICAgICAgY29uc3QgbSA9IChsICsgcikgLyAyLCBoID0gKHIgLSBsKSAvIDI7CiAgICAgICAgICAgICAgICBjb25zdCBMUyA9IChoIC8gNikgKiAoZihsKSArIDQgKiBmKChsICsgbSkgLyAyKSArIGYobSkpOwogICAgICAgICAgICAgICAgY29uc3QgUlMgPSAoaCAvIDYpICogKGYobSkgKyA0ICogZigobSArIHIpIC8gMikgKyBmKHIpKTsKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhMUyArIFJTIC0gU193aG9sZSkgPD0gMTUgKiBlcHMpIHJldHVybiBMUyArIFJTICsgKExTICsgUlMgLSBTX3dob2xlKSAvIDE1OwogICAgICAgICAgICAgICAgcmV0dXJuIHJlYyhsLCBtLCBlcHMgLyAyLCBMUywgZCArIDEpICsgcmVjKG0sIHIsIGVwcyAvIDIsIFJTLCBkICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlYyhhLCBiLCBlcHMsIFMsIDApOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlKCkgewogICAgICAgICAgICBjb25zdCBzdHIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZnVuY19pbicpLnZhbHVlOwogICAgICAgICAgICBjb25zdCBhID0gcGFyc2VGbG9hdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmFsX2EnKS52YWx1ZSk7CiAgICAgICAgICAgIGNvbnN0IGIgPSBwYXJzZUZsb2F0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YWxfYicpLnZhbHVlKTsKCiAgICAgICAgICAgIGNvbnN0IGYgPSBNYXRoRW5naW5lLmNvbXBpbGUoc3RyKTsKICAgICAgICAgICAgY29uc3QgZXJyQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vycm9yX21zZycpOwoKICAgICAgICAgICAgaWYgKCFmIHx8IGlzTmFOKGYoMSkpKSB7CiAgICAgICAgICAgICAgICBlcnJCb3guc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICBlcnJCb3guaW5uZXJUZXh0ID0gIkludmFsaWQgZnVuY3Rpb24gc3ludGF4LiBUcnkgJ3heMicgb3IgJ3Npbih4KScuIjsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJCb3guc3R5bGUuZGlzcGxheSA9ICdub25lJzsKCiAgICAgICAgICAgIGNvbnN0IGFyZWEgPSBhZGFwdGl2ZVNpbXBzb25zKGYsIGEsIGIpOwoKICAgICAgICAgICAgLy8gT3V0cHV0CiAgICAgICAgICAgIGNvbnN0IGN0eFZhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBfY29udGV4dCcpLnZhbHVlOwogICAgICAgICAgICBjb25zdCByZXNCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0X2JveCcpOwogICAgICAgICAgICByZXNCb3guY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwoKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc19sYmwnKS5pbm5lclRleHQgPSBjdHhMYWJlbHNbY3R4VmFsXS5yZXM7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNfdmFsJykuaW5uZXJUZXh0ID0gYXJlYS50b0ZpeGVkKDQpOwoKICAgICAgICAgICAgLy8gRXhwbGFuYXRpb24KICAgICAgICAgICAgbGV0IHR4dCA9ICIiOwogICAgICAgICAgICBpZiAoY3R4VmFsID09PSAndmVsb2NpdHknKSB7CiAgICAgICAgICAgICAgICB0eHQgPSBgVGhlIGFyZWEgdW5kZXIgdGhlIHZlbG9jaXR5IGdyYXBoIHJlcHJlc2VudHMgZGlzcGxhY2VtZW50LiBUb3RhbCBkaXNwbGFjZW1lbnQgaXMgJHthcmVhLnRvRml4ZWQoMil9IHVuaXRzLmA7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4VmFsID09PSAnZ3Jvd3RoJykgewogICAgICAgICAgICAgICAgdHh0ID0gYEFjY3VtdWxhdGluZyB0aGUgcmF0ZSBvdmVyIHRpbWUgZ2l2ZXMgYSB0b3RhbCBncm93dGggb2YgJHthcmVhLnRvRml4ZWQoMil9LmA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0eHQgPSBgVGhlIG5ldCBhcmVhIGJvdW5kZWQgYnkgZih4KSBhbmQgdGhlIHgtYXhpcyBmcm9tICR7YX0gdG8gJHtifS5gOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNfZXhwbCcpLmlubmVyVGV4dCA9IHR4dDsKCiAgICAgICAgICAgIGRyYXcoZiwgYSwgYiwgY3R4VmFsKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGRyYXcoZiwgYSwgYiwgY3R4VmFsKSB7CiAgICAgICAgICAgIGNvbnN0IGN2cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncmFwaENhbnZhcycpOwogICAgICAgICAgICBjb25zdCBjdHggPSBjdnMuZ2V0Q29udGV4dCgnMmQnKTsKICAgICAgICAgICAgY29uc3QgdyA9IGN2cy5wYXJlbnRFbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICAgICBjb25zdCBoID0gY3ZzLnBhcmVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OwogICAgICAgICAgICBjdnMud2lkdGggPSB3OyBjdnMuaGVpZ2h0ID0gaDsKCiAgICAgICAgICAgIC8vIFZpZXdwb3J0CiAgICAgICAgICAgIGxldCBtaW5YID0gTWF0aC5taW4oYSwgYiksIG1heFggPSBNYXRoLm1heChhLCBiKTsKICAgICAgICAgICAgY29uc3QgcGFkID0gKG1heFggLSBtaW5YKSAqIDAuMiB8fCAyOwogICAgICAgICAgICBtaW5YIC09IHBhZDsgbWF4WCArPSBwYWQ7CiAgICAgICAgICAgIGNvbnN0IHJhbmdlWCA9IG1heFggLSBtaW5YOwoKICAgICAgICAgICAgLy8gWSByYW5nZQogICAgICAgICAgICBsZXQgbWluWSA9IDAsIG1heFkgPSAwOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSA1MDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjb25zdCB4ID0gbWluWCArIChyYW5nZVggKiBpIC8gNTApOwogICAgICAgICAgICAgICAgY29uc3QgeSA9IGYoeCk7CiAgICAgICAgICAgICAgICBpZiAoaXNGaW5pdGUoeSkpIHsKICAgICAgICAgICAgICAgICAgICBtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7CiAgICAgICAgICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtYXhZIDwgMC4xKSBtYXhZID0gMTsKICAgICAgICAgICAgaWYgKG1pblkgPiAtMC4xKSBtaW5ZID0gLTE7CiAgICAgICAgICAgIGNvbnN0IHJhbmdlWSA9IChtYXhZIC0gbWluWSkgKiAxLjQ7IC8vIGJyZWF0aGluZyByb29tCiAgICAgICAgICAgIGNvbnN0IG1pZFkgPSAobWF4WSArIG1pblkpIC8gMjsKCiAgICAgICAgICAgIGNvbnN0IHRvQ3ggPSAoeCkgPT4gKHggLSBtaW5YKSAvIHJhbmdlWCAqIHc7CiAgICAgICAgICAgIGNvbnN0IHRvQ3kgPSAoeSkgPT4gaCAtICh5IC0gKG1pZFkgLSByYW5nZVkgLyAyKSkgLyByYW5nZVkgKiBoOwoKICAgICAgICAgICAgLy8gQXhlcwogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSAnI2JkYmRiZCc7CiAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAxOwogICAgICAgICAgICBjb25zdCBvcmlnaW5ZID0gdG9DeSgwKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyBjdHgubW92ZVRvKDAsIG9yaWdpblkpOyBjdHgubGluZVRvKHcsIG9yaWdpblkpOyBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIGNvbnN0IG9yaWdpblggPSB0b0N4KDApOwogICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7IGN0eC5tb3ZlVG8ob3JpZ2luWCwgMCk7IGN0eC5saW5lVG8ob3JpZ2luWCwgaCk7IGN0eC5zdHJva2UoKTsKCiAgICAgICAgICAgIC8vIExhYmVscwogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJyM2MTYxNjEnOwogICAgICAgICAgICBjdHguZm9udCA9ICcxMnB4IFNlZ29lIFVJJzsKICAgICAgICAgICAgY3R4LmZpbGxUZXh0KGN0eExhYmVsc1tjdHhWYWxdLngsIHcgLSA1MCwgb3JpZ2luWSAtIDUpOwogICAgICAgICAgICBjdHguZmlsbFRleHQoY3R4TGFiZWxzW2N0eFZhbF0ueSwgb3JpZ2luWCArIDUsIDIwKTsKCiAgICAgICAgICAgIC8vIEFyZWEKICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGN0eFZhbCA9PT0gJ3ZlbG9jaXR5JyA/ICdyZ2JhKDAsIDE5MSwgMTY1LCAwLjIpJyA6ICdyZ2JhKDk4LCAwLCAyMzQsIDAuMTUpJzsKICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihhLCBiKSwgZW5kID0gTWF0aC5tYXgoYSwgYik7CiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSAoZW5kIC0gc3RhcnQpIC8gMTAwOwoKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICBsZXQgZmlyc3QgPSB0cnVlOwogICAgICAgICAgICBmb3IgKGxldCB4ID0gc3RhcnQ7IHggPD0gZW5kOyB4ICs9IHN0ZXApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBmKHgpOwogICAgICAgICAgICAgICAgY29uc3QgY3ggPSB0b0N4KHgpLCBjeSA9IHRvQ3koeSk7CiAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsgY3R4Lm1vdmVUbyhjeCwgb3JpZ2luWSk7IGN0eC5saW5lVG8oY3gsIGN5KTsgZmlyc3QgPSBmYWxzZTsgfQogICAgICAgICAgICAgICAgZWxzZSBjdHgubGluZVRvKGN4LCBjeSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LmxpbmVUbyh0b0N4KGVuZCksIG9yaWdpblkpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGN0eC5maWxsKCk7CgogICAgICAgICAgICAvLyBDdXJ2ZQogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSBjdHhWYWwgPT09ICd2ZWxvY2l0eScgPyAnIzAwYmZhNScgOiAnIzYyMDBlYSc7CiAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSAyOwogICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgIGZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgY29uc3QgZHJhd1N0ZXAgPSByYW5nZVggLyAyMDA7CiAgICAgICAgICAgIGZvciAobGV0IHggPSBtaW5YOyB4IDw9IG1heFg7IHggKz0gZHJhd1N0ZXApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHkgPSBmKHgpOwogICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZSh5KSkgY29udGludWU7CiAgICAgICAgICAgICAgICBjb25zdCBjeCA9IHRvQ3goeCksIGN5ID0gdG9DeSh5KTsKICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgeyBjdHgubW92ZVRvKGN4LCBjeSk7IGZpcnN0ID0gZmFsc2U7IH0KICAgICAgICAgICAgICAgIGVsc2UgY3R4LmxpbmVUbyhjeCwgY3kpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKICAgICAgICB9CgogICAgICAgIC8vIEluaXQKICAgICAgICBjYWxjdWxhdGUoKTsKCiAgICA8L3NjcmlwdD4KCjwvYm9keT4KCjwvaHRtbD4=”; 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”;…

  • Accurate Land Area Calculator for 4-Sided Plots — Square Feet, Acres & More

    Land Area Calculator (4 Sides) Land Area Calculator Accurate 4-Sided Plot Measurement Unit: Feet Meters Yards Mode: Exact (Diagonal) Approximate 1. Enter Dimensions Side A (Length) ft Side B (Width) ft Side C (Length) ft Side D (Width) ft Diagonal Length ft *Connects Corner A-B to C-D (splits plot into 2 triangles) Approximation Mode: Calculating…

  • Rhombus Area Calculator – Find Area with Diagonals, Height, or Angle

    Rhombus Area Calculator Rhombus Area Calculator Compute area from diagonals, side & angle, side & height, coordinates, or vectors. Calculation Mode Diagonals (d₁, d₂)Side & Angle (a, θ)Side & Height (a, h)Coordinates (Vertices)Vectors (u, v) Diagonal d₁ mcmmmftinyd Diagonal d₂ mcmmmftinyd Side Length (a) mcmmmftin Apply Angle (θ) degrad Side (a) mcmmmftin Height (h) mcmmmftin…

  • Jamin Area Calculator — Calculate Land Area & Convert Units

    Jamin Area Calculator (Land Measurement) Jamin Area Calculator (Land Measurement) Calculate Area in Acre, Hectare, Bigha, Katha & More Rectangle / Square Triangle Irregular Quadrilateral Region (For Unit Conv.) Standard (Global)Bihar / JharkhandWest BengalUttar PradeshPunjab / HaryanaTamil Nadu / SouthGujarat / West Input Unit Feet (ft)Meters (m)Yards (yd) Plot Dimensions All 3 Sides (Heron’s Formula)…